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

Php 捕获单引号/双引号和括号的正则表达式,php,regex,quotes,parentheses,Php,Regex,Quotes,Parentheses,使用PHP中的以下正则表达式,我能够从应用程序文件中筛选出类似于_u(‘测试字符串’)的字符串,以便进行翻译 preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches) 然而,我一直在琢磨如何捕获包含括号的字符串,而不破坏解析同时包含单(')和双(“)引号的字符串的能力 gSkinner的RegExr中的这个示

使用PHP中的以下正则表达式,我能够从应用程序文件中筛选出类似于_u(‘测试字符串’)的字符串,以便进行翻译

preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches)
然而,我一直在琢磨如何捕获包含括号的字符串,而不破坏解析同时包含单(')和双(“)引号的字符串的能力

gSkinner的RegExr中的这个示例显示了以下问题:


今天有人觉得自己像个雷格士忍者吗?提前谢谢。还有,哇哦,第一篇帖子。

这应该可以:
我想你的思路是对的

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


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

当有多个
\uuu()时,将中断
因为它将匹配第一次打开和最后一次关闭之间的所有内容。不幸的是,每个文件都有多个字符串要检测和捕获。如果字符串中有下划线呢?是的,但可能性有多大?我认为无论解决方案多么完美,如果它解决了问题,它就是一个解决方案。下划线不应该是问题lem,这些都是面向用户的字符串。即使是括号也很少见。接受这个,谢谢!我很确定你需要一个。或者。尽管正则表达式足够了,如果你只需要匹配常量字符串,而不是字符串表达式(即使这样,正则表达式也可能更简洁)。