正则表达式捕获单/双引号和括号

时间:2013-12-02 19:53:51

标签: php regex quotes parentheses

在PHP中使用以下正则表达式,我可以从我们的应用程序文件中过滤掉看起来像__('test string')的字符串,以便进行翻译。

preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches)

但是,我不知道如何捕获包含括号的字符串,而不会破坏解析具有单引号(')和双引号(“)的字符串的能力。

gSkinner的RegExr中的这个例子显示了问题:http://gskinner.com/RegExr/?35joj

今天有人觉得像一个正则表形的忍者吗?提前致谢。另外,谁,第一篇文章。

2 个答案:

答案 0 :(得分:1)

应该这样做:__\(('|")[^__]+('|")\)

答案 1 :(得分:0)

我认为你走在正确的轨道上。

 #  "/__\\((?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')\\)/"


 __\(
 (?:
      " [^"\\]* (?: \\ . [^"\\]* )* "
   |  
      ' [^'\\]* (?: \\ . [^'\\]* )* '
 )
 \)