连续大写字母的正则表达式

3

我正在尝试使用正则表达式在字符串中查找三个连续的大写字母。

我已经尝试使用以下代码:

\b([A-Z]){3}\b  

我的正则表达式可以工作,但只能返回单个字符串。我还想在字符串中查找三个连续的大写字母,例如thisISAtest
1个回答

6

我想知道为什么你的正则表达式中有\b字符边界?字符边界可以确保单词字符后面跟着的是非单词字符(反之亦然)。这就是防止匹配thisISAtest的原因。如果删除它们,你的正则表达式应该就能正常工作了!

([A-Z]){3}

另一件事是我不确定你为什么要使用捕获组。你是在提取三个大写字母的最后一个字母吗?如果不是,你可以简单地使用:

[A-Z]{3}

您不一定需要使用组来使用明确的量词。 :)

编辑:为了防止连续的大写字母,您可以利用负向预查:

(?<![A-Z])[A-Z]{3}(?![A-Z])

(?<![A-Z]) 确保前面没有大写字母;

(?![A-Z]) 确保后面没有大写字母。


谢谢你的帮助,伙计。看起来那个正则表达式会把TEST算作匹配,对吧?我只想要任何只有3个大写字母且没有相邻大写字母的东西。顺便说一下,我是新手。 - user1411838
@user1411838 哦,好的,我会编辑我的正则表达式并告诉你 :) - Jerry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接