我需要将所有表达式(例如:大声笑(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}\)
答案 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
中第二个Q
和Bring 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,}\)
我在两者之间放置了一些特殊字符