在PHP中使用以下正则表达式,我可以从我们的应用程序文件中过滤掉看起来像__('test string')的字符串,以便进行翻译。
preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches)
但是,我不知道如何捕获包含括号的字符串,而不会破坏解析具有单引号(')和双引号(“)的字符串的能力。
gSkinner的RegExr中的这个例子显示了问题:http://gskinner.com/RegExr/?35joj
今天有人觉得像一个正则表形的忍者吗?提前致谢。另外,谁,第一篇文章。
答案 0 :(得分:1)
应该这样做:__\(('|")[^__]+('|")\)
。
答案 1 :(得分:0)
我认为你走在正确的轨道上。
# "/__\\((?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')\\)/"
__\(
(?:
" [^"\\]* (?: \\ . [^"\\]* )* "
|
' [^'\\]* (?: \\ . [^'\\]* )* '
)
\)