Php 捕获单引号/双引号和括号的正则表达式
使用PHP中的以下正则表达式,我能够从应用程序文件中筛选出类似于_u(‘测试字符串’)的字符串,以便进行翻译Php 捕获单引号/双引号和括号的正则表达式,php,regex,quotes,parentheses,Php,Regex,Quotes,Parentheses,使用PHP中的以下正则表达式,我能够从应用程序文件中筛选出类似于_u(‘测试字符串’)的字符串,以便进行翻译 preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches) 然而,我一直在琢磨如何捕获包含括号的字符串,而不破坏解析同时包含单(')和双(“)引号的字符串的能力 gSkinner的RegExr中的这个示
preg_match_all('/__\((?:(?:[\"]([^\"\)]*?)[\"](?:,[^\)]*)?)|(?:[\']([^\'\)]*?)[\'](?:,[^\)]*)?))\)/', $contents, $matches)
然而,我一直在琢磨如何捕获包含括号的字符串,而不破坏解析同时包含单(')和双(“)引号的字符串的能力
gSkinner的RegExr中的这个示例显示了以下问题:
今天有人觉得自己像个雷格士忍者吗?提前谢谢。还有,哇哦,第一篇帖子。这应该可以:
我想你的思路是对的
# "/__\\((?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"|'[^'\\\\]*(?:\\\\.[^'\\\\]*)*')\\)/"
__\(
(?:
" [^"\\]* (?: \\ . [^"\\]* )* "
|
' [^'\\]* (?: \\ . [^'\\]* )* '
)
\)
当有多个
\uuu()时,将中断
因为它将匹配第一次打开和最后一次关闭之间的所有内容。不幸的是,每个文件都有多个字符串要检测和捕获。如果字符串中有下划线呢?是的,但可能性有多大?我认为无论解决方案多么完美,如果它解决了问题,它就是一个解决方案。下划线不应该是问题lem,这些都是面向用户的字符串。即使是括号也很少见。接受这个,谢谢!我很确定你需要一个。或者。尽管正则表达式足够了,如果你只需要匹配常量字符串,而不是字符串表达式(即使这样,正则表达式也可能更简洁)。