【问题标题】:Regexp for finding all regexps in project用于查找项目中所有正则表达式的正则表达式
【发布时间】:2016-11-09 15:15:21
【问题描述】:

我需要优化 JavaScript 项目中的所有正则表达式。我通过简单的搜索找到了所有使用新 RegExp 创建的。问题是创建为文字的那些:/asd/

我使用的是 PhPStorm,所以正则表达式引擎是 Java。这意味着我们已经向后看。所以我想出了这个:

(?<=[\s=(,\[\?:;|)])\/[^*\n/][^\n/]*[^*]\/

这意味着给我所有看起来像 /.../ 并且前面没有以下之一的内容:\s= (,[?:;|)

  1. 正则表达式前面可以有其他内容吗?
  2. 你有更好的主意吗?

搜索 String 和 RegExp 类使用的方法是不可接受的(exec、replace...),因为在某些项目中查找声明非常困难并且需要大量时间。另外,您可以多次使用同一个正则表达式。

【问题讨论】:

  • 你不能用正则表达式有效地解析源代码,只有在某些情况下。因此,向后看几乎没有帮助。您可以尝试使用/[^\\/]*(?:\\/[^\\/]*)*/,但恐怕会出现“过火”。是的,你可以在它之前添加一个(?&lt;!\\),但仍然会有其他极端情况(理论上)。
  • 另外注意在 JavaScript 正则表达式之后可以有标志,g - 全局 i - 不区分大小写 m - 多行 y - 粘性搜索
  • 您可以搜索所有使用正则表达式的方法:exectestmatchsearchreplacesplit
  • 我不需要高效解析。唯一严格的条件是不能错过任何一个。我希望尽可能少的误报。
  • 搜索 exec、test、match、search、replace 和 split 也会给我新的 RegExp 形成的正则表达式,我必须去文件查看声明。在 JavaScript 中,这对于某些项目来说几乎是不可能的。

标签: javascript regex text-parsing string-parsing


【解决方案1】:

我的正则表达式有点不对劲。我最终使用了这个:

(?<=[\s=(,\[\?:;|)])\/[^\n/].*?\/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    相关资源
    最近更新 更多