regex - 匹配需要模块的正则表达式?

标签 regex

我在自定义文本编辑器中使用正则表达式来有效地将某些模块(断言和加密)列入白名单。我接近我需要的东西,但还不够。在这里:

/require\s*\(\s*'(?!(\bassert\b|\bcrypto\b)).*'\s*\)/

我希望正则表达式匹配任何包含 require('foo'); 的行,其中 foo 是除“assert”或“crypto”之外的任何内容。我失败的情况是 require('assert'); 与我的正则表达式不匹配但是 require('assert'); 被正确匹配。

https://regexr.com/4i6ot

最佳答案

如果您不想在 ' 之间匹配 assertcrypto,您可以更改 lookahead 以准确断言。您可以省略与 ' 之后的单词匹配的单词边界。

如果后面的内容应该匹配到 ' 第一次出现,您可以使用否定字符类 [^'\r\n]* 来匹配任何字符,除了' 或换行符。

require\s*\(\s*'(?!(assert|crypto)')[^'\r\n]*'\s*\)
                                  ^ 

Regex demo

关于regex - 匹配需要模块的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227103/

相关文章:

javascript - 使用正则表达式替换所有逗号和方括号

从二次方程中提取系数的Java程序

javascript - 正则表达式删除 - 除非前面有另一个运算符

java - 从命令行读取时将空元素插入到 ArrayList 中

javascript - 突出显示文本正文中短语的部分内容

c# - 捕获可变长度的子串引用号

javascript - 如何在我的 PHP JavaScript 代码中使用此 RegEx 在删除符号时保留 UTF-8 字符?

java - 如何使用正则表达式在文本文件中查找一系列数据?

python - Pandas:将一列分解为多行

regex - 仅当 $1 < $2 时,我怎样才能让我的 Perl 正则表达式匹配?