使用JS正则表达式匹配所有表达式

时间:2020-08-01 06:26:02

标签: javascript regex string

我需要将所有表达式(例如:大声笑(LoL))匹配2个或3个以上的单词。我的正则表达式仅适用于3个字符长的表达式的文本。如何使正则表达式非常通用(不将长度指定为3),以便即使表达式具有任何长度也可以选择表达式。

共享的链接提供了概述。

最后一个表达式

受激辐射产生的光放大(LASER) 未使用以下正则表达式选择绿色技能开发计划(GSDP)

\b(\w)[\w']*[^a-zA-Z()]* (\w)[\w']*[^a-zA-Z()]* (\w)[\w']*[^a-zA-Z()]* \(\1\2\3\)

\b(?:\w[\w']* [^a-zA-Z]*){3} ?\([A-Z]{3}\)

https://regex101.com/r/QPMo5M/1

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

/\b(\w)[-'\w]* (?:[-'\w]* ){1,}\(\1[A-Z]{1,}\)/gi

更新

@ikegami commented一样,这个草率的正则表达式也匹配Bring some drinks (beer)Bring something to put on the grill (BBQ)之类的东西。我认为在进行正则表达式匹配后,可以通过使用适当的JavaScript代码来过滤这些情况。也许在Bring some drinks (beer)的情况下,我们可以通过使用(beer)没有大写字母的事实来检测它。对于Bring something to put on the grill (BBQ),我们可以利用B中第二个QBring something to put on the grill没有匹配的首字母这一事实来检测它。


更新2

当我们使用上面的正则表达式匹配以下字符串时:

We need to use technologies from Natural Language Processing (NLP).

它匹配“ need to use technologies from Natural Language Processing (NLP)”,而不匹配“ Natural Language Processing (NLP)”。这些问题也应解决。


更新3

以下正则表达式与长度从2到5的首字母缩写匹配,并且没有上述问题。而且我认为可以很容易地扩展它以支持更长的长度:

/\b(\w)\S* (?:(?:by |of )?(\w)\S* (?:(?:by |of )?(\w)\S* (?:(?:by |of )?(\w)\S* (?:(?:by |of )?(\w)\S* )?)?)?) *\(\1\2\3\4\5\)/gi

答案 1 :(得分:-1)

\b(\w)[-'\w]* (?:[-`."?,~=@!/\\|+:;%°*#£&^€$¢¥§'\w]* ){2,}\(\1[A-Z]{2,}\)

我在两者之间放置了一些特殊字符

相关问题