正则表达式匹配序列不止一次

时间:2015-03-25 08:36:22

标签: regex

在互联网上看了一个小时之后,我怎么能找到答案呢?

我有这句话:

HeLLo woRLd HOw are YoU

我想要捕获包含两个以下大写字母的所有组

[A-Z]{2}

上面的正则表达式有效但只捕获LL(前两个大写字母),而我希望LL在一个组中,而在其他组中RL HO < / p>

2 个答案:

答案 0 :(得分:3)

大多数正则表达式引擎都会提供一些方法来使表达式全局。这意味着您的表达式将多次应用。此全局标志通常在表达式末尾用/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())

答案 1 :(得分:0)

在这种情况下,你不能拥有多个群组,但可以有多个匹配。将全局标志添加到正则表达式并使用方法匹配正则表达式。

对于javscript,它将是/[A-Z]{2}/g。 该方法最有可能返回一个匹配数组,您可以使用索引来访问它们。