【发布时间】:2013-08-18 09:43:04
【问题描述】:
我正在尝试使用正则表达式在字符串中查找三个连续的大写字母。
我尝试过使用:
\b([A-Z]){3}\b
作为我的正则表达式,它在一定程度上起作用。
但是,这只会单独返回字符串。我还希望它找到嵌套在字符串中的三个连续大写字母。即thisISAtest。
【问题讨论】:
标签: python regex python-3.x
我正在尝试使用正则表达式在字符串中查找三个连续的大写字母。
我尝试过使用:
\b([A-Z]){3}\b
作为我的正则表达式,它在一定程度上起作用。
但是,这只会单独返回字符串。我还希望它找到嵌套在字符串中的三个连续大写字母。即thisISAtest。
【问题讨论】:
标签: python regex python-3.x
我想知道为什么您的正则表达式 \b 中有这些单词边界?单词边界确保单词字符后跟非单词字符(反之亦然)。这些是阻止thisISAtest 匹配的原因。删除它们,您应该会很好!
([A-Z]){3}
另一件事是我不确定您为什么要使用捕获组。你是在提取三个大写字母的最后一个字母吗?如果没有,您可以简单地使用:
[A-Z]{3}
您不一定需要组来使用明确的量词。 :)
编辑:为了防止更多连续的大写字母,您可以使用否定的环视:
(?<![A-Z])[A-Z]{3}(?![A-Z])
(?<![A-Z]) 确保前面没有大写字母;
(?![A-Z]) 确保后面没有大写字母。
【讨论】: