以下模式(来自this page)仅匹配具有平衡括号的字符串:
b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" }
1-
中的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
+1
中的patt / repl + 1
是什么意思?
我仍然没有完全从这个paper获得优先选择运算符/
的功能
任何帮助将不胜感激!
答案 0 :(得分:5)
1
中的1 - lpeg.S"()"
表示任何字符。整个语句可以读作,匹配任何字符,而不匹配集合"()"
中的字符。
+1
是相同的想法,如果repl
是字符串,那么patt / repl + 1
匹配模式patt
,然后用字符串repl
替换它的捕获或跳过一个角色。