Python regex to PHP?


Python regex to PHP?

我正在尝试将Python脚本转换为PHP。

以下2个正则表达式在Python中工作:

'/'*'*(['w'n'(')'[']'.'*'''"'-#|,@{}_<>=:/ ]+?)'*/'
'(?:'* (['w'd'('),'.'''"'-':#|/ ]+)|(?<= @)('w+)(?: (.+))?)'

…然而,如果我尝试在PHP中运行它们,我得到:

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier ']'

如何来吗?

原因是PHP希望在其正则表达式周围使用分隔符,因此它将第一个和第二个斜杠视为分隔符,并尝试将后面的内容解析为修饰符。

用新的分隔符包围你的regex,然后再试一次(我还删除了一些不必要的反斜杠):

'%/'*'*(['w'n()'['].*''"#|,@{}_<>=:/ -]+?)'*/%'
'%(?:'* (['w'd(),.''"':#|/ -]+)|(?<= @)('w+)(?: (.+))?)%'

提示:使用RegexBuddy来做这些事情。它将接受用语言a编写的正则表达式,并为您将其转换为语言B。

PCRE(包括preg_match_all)需要一个模式边界。您需要在/@#%或许多其他可能的选项中包装整个模式。我建议%,因为它看起来不像你在使用它的任何模式,即:

%(?:'* (['w'd'('),'.'''"'-':#|/ ]+)|(?<= @)('w+)(?: (.+))?)%