需要帮助来理解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替换它的捕获或跳过一个字符。
