Lua模式用于替换任何跟随特定字符串的单词、字符、数字或符号。

我想在 Lua 中将任何单词、字符、数字或符号(除了; , .)后面跟着字符串 "some-word\" 的地方替换掉。类似于正则表达式中的 \* 选项。 Lua 中是否有类似于 \* 的东西?

示例:

some-word\\test -> some-word\\###

some-word\\b*ax#@$6; -> some-word\\###;

some-word\\?foo,> -> some-word\\###,

我正在使用的代码:

d = "some-word"
p = (tostring(d).."\\[.%c%w%p^%;^%,^%.]+")
c = "###"
s = "testing some-word\\test-2 later some-word\\&^*; some-word\\set_34$ "
print(p)
res = (string.gsub(s,p,c))
print(res)
点赞
用户1009479
用户1009479

(some%-word)\[^;,.%s]*可以使用,注意:

  • - 是 Lua 模式中的特殊字符,需要进行转义。
  • some%-word 被括在 () 中,所以它可以用 %1 进行捕获。
  • 在字符类中,^ 在开头被用来表示后面内容的补集。

测试:

d = "some%-word"
p = "(" .. d .. ")" .. "\\[^;,.%s]*"
c = "%1###"
s = "testing some-word\\test-2 later some-word\\&^*; some-word\\set_34$ "
print(p)
res = string.gsub(s,p,c)
print(res)

输出:

(some%-word)\[^;,.%s]*
testing some-word### later some-word###; some-word###
2015-03-26 05:16:41