【问题标题】:Regex to match instances of X unless they're within comments正则表达式匹配 X 的实例,除非它们在评论中
【发布时间】:2017-03-08 02:58:52
【问题描述】:

如果它跟在注释后面,我有一个匹配“if”语句的正则表达式:

 (?:(\/\*[\w\s\']*)|(\/\/[\w\s\']*))if

我需要找到'if'的所有实例,只要它们与上面的正则表达式不匹配,因此如果'if'语句在cmets中,则忽略它,否则匹配它。单独使用正则表达式是否可行?这感觉就像它非常接近。

【问题讨论】:

  • 你的问题很有道理,我不知道为什么会投反对票。无论如何,您是在谈论引用的 cmets 或代码 cmets?
  • 因为您的正则表达式似乎以 \/\*\/\/ 为目标代码 cmets,但在尝试时它将适用于引用的 cmets 哈哈
  • 对于代码 cmets,它在一个正则表达式中并不完全可行:您必须放弃 ///* */ 在引号内的情况,并处理嵌套引号和反斜杠引号。您可以通过首先解析一个标志变量来执行多个步骤,该变量首先存储打开和关闭引号的状态。然后如果您的标志显示评论当前已关闭,那么您匹配 if。不确定它在 JS 中是否完全可行。

标签: javascript regex match


【解决方案1】:

首先使用 REGEX 从 cmets 中清理代码,然后在清理后的代码上进行第二次运行如何?

我使用带有 PCRE 方言的 REGEXP_REPLACE 在 SQL 中完成了它,但我相信你会掌握它的窍门

SQL/Regex Challenge/Puzzle: How to remove comments from SQL code (by using SQL query)?

附: 您可能还想使用相同的概念删除字符串。

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 2012-12-23
    • 2011-10-09
    • 1970-01-01
    • 2021-12-31
    • 2013-09-11
    • 2017-03-24
    • 2017-08-04
    相关资源
    最近更新 更多