【问题标题】:Regex to find strings not encapsulated with __("")正则表达式查找未用 __("") 封装的字符串
【发布时间】:2013-08-14 09:28:50
【问题描述】:

我试图在我们的代码中找到任何需要发送到 __() 函数的字符串实例。

我有以下正则表达式:

 (\[|__\()[\'\"][\w\s\\\:]+[\'\"]

匹配的:

 ['valid string'
 ["valid::str::ing"
 __('valid\String'
 __(" v a l i d s t r i n g "

但不是:

 'hel\lo there '
 "he::he"

我需要它来逆转比赛。我尝试了各种方法来否定 ([|__() 部分,但没有任何成功。

如何编写表达式以匹配前面没有 [ 或 __(?

谢谢。

【问题讨论】:

  • 仅仅说你有一个“正则表达式”是不够的,你必须指出你正在使用什么工具或语言。有些支持否定的后向表示法(?<!...),它可以做你想做的事,但有些不支持,即使是那些做的,细节也有所不同。
  • 'hey it\'s an unexpected \''这样的脏话也需要处理吗?
  • @ruakh - 抱歉,表达式将在 PHPStorm 中执行。
  • @Wrikken - 是的,但我不太关心字符串细节,而是让第一部分正常工作。

标签: regex phpstorm regex-negation


【解决方案1】:
/([^\[\(]|[^\_]\(|[^\_]_\()[\'\"][\w\s\\\:]+[\'\"]/

匹配前面没有[( 的带有'" 的字符串, 但如果前面不是_,则允许(, 如果前面没有第二个_,也允许_(

【讨论】:

    【解决方案2】:

    您也许可以使用否定的lookbehind。请看:

    http://www.regular-expressions.info/lookaround.html

    【讨论】:

    • 这不是答案。如果您在提出解决方案之前需要更多信息,请在ruakh did 之类的评论中询问。像这样的模糊提示与 SO 的 philosophy 不兼容。
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2012-04-25
    • 2011-02-23
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多