regex - 有没有办法简化这个正则表达式(OR)?

regex - 有没有办法简化这个正则表达式(OR)?

基本正则表达式是

[^ ]*KEYWORD[^ ]*

关键字 = 自由文本,

我有很多关键字,因此我使用 OR >>>“|”,并在一行中重复正则表达式多次,例如:

[^ ]*210[^ ]*|[^ ]*211[^ ]*|[^ ]*212[^ ]*|[^ ]*213[^ ]*|[^ ]*214[^ ]*

有没有办法简化这个?因为当我进行模拟时,它需要 46057 步,太多了

答案1

如果没有一些示例文本和正则表达式风格(您使用的是什么语言/工具?),很难知道您想要实现什么。但是,考虑到您的正则表达式,它可以简化为:

[^ ]*(?:210|211|212|213|214)[^ ]*

这种构造(?...)被称为非捕获组,它实际上比捕获组更有效(当然,在您不需要捕获数据的情况下)。

另一种简化方法是:

[^ ]*21[0-4][^ ]*

根据您想要匹配的内容(用于什么[^ ]*?),以下内容应该足够了:

21[0-4]

相关内容