正则表达式多次匹配序列

标签 regex

为什么这么简单的事情我在互联网上查找一小时后找不到答案?

我有这样一句话:

HeLLo woRLd HOw are YoU

我想捕获由以下两个大写字母组成的所有组

[A-Z]{2}

上面的正则表达式可以工作,但只捕获LL(前两个大写字母),而我希望在一个组中包含LL,在其他组中也包含RL HO

最佳答案

大多数正则表达式引擎都会公开一些方法来使您的表达式全局。这意味着您的表达式将应用多次。这个全局标志通常在表达式末尾用/g标记表示。 This是不带 /g 标志的正则表达式,而 this当您应用所述标志时会发生什么。

不同的语言以不同的方式公开此类功能,例如在 C# 中,这是通过 Regex.Matches 语法完成的。在 Java 中,您使用 while(matcher.find()),它不断提供与所提供的模式匹配的子字符串。

编辑:我不是Python人,但从可用的示例来看here ,你可以这样做:

it = re.finditer(r"[A-Z]{2}", "HeLLo woRLd HOw are YoU")
for match in it:
    print "'{g}' was found between the indices {s}".format(g=match.group(), s=match.span())

关于正则表达式多次匹配序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29250841/

相关文章:

regex - 使用正则表达式检查字符串是否以数字开头

java - 用于检查字母数字字符串的正则表达式不起作用

javascript - 将 C# RegEx 转换为 JavaScript 会出现错误 Invalid Group

ruby - 特定字符串的反向正则表达式查找

ruby-on-rails - 验证字符串是 youtube 或 vimeo 视频的 url 的正则表达式是什么?

c# - 一种使用 RegEx 在字符串中查找一组文件名路径的方法

JavaScript 从字符串中删除零宽度空格 (unicode 8203)

javascript - JavaScript 正则表达式的缩写和&符号检查

c# - 从路径字符串中去除尾随字符

c++ - regex_match 作为谓词