需要帮助来理解LPeg和PEG
以下模式(来自此页面)仅匹配具有平衡圆括号的字符串:
b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" }
1-
in 1 - lpeg.S"()"
是什么意思?
function gsub (s, patt, repl)
patt = lpeg.P(patt)
patt = lpeg.Cs((patt / repl + 1)^0)
return lpeg.match(patt, s)
end
patt / repl + 1
中的+1
是什么意思?
我仍然不能完全得到优先选择运营商的功能/
非常好,从这个文件
任何帮助将不胜感激!
1
1 - lpeg.S"()"
表示任何字符。 整个语句可以被读为,匹配任何字符,但不匹配集合"()"
的字符。
+1
是同样的想法,如果repl
是一个字符串,那么patt / repl + 1
匹配模式patt
,然后用字符串repl
替换它的捕获或跳过一个字符。