正则表达式 - 在空格或行首之后匹配一对重复的字符

时间:2014-01-24 16:32:00

标签: regex

我一直在尝试学习正则表达式,有时我遇到一些我很难理解的东西。

今天早些时候我试图在空格或行首之后匹配一对重复的字符,所以我首先找到了匹配空格或行首的方法:(^|\s)

然后,匹配一对(字母数字)字符:(\w)\1+

两者都很有效,但是当我把它们组合在一起(^|\s)(\w)\1+时,它就不起作用了。

你知道为什么这是错的,实现我想要的最好的方法是什么?

顺便说一句,我正在使用this website来测试我的表达式。

非常感谢!

2 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

(?:^|\s)(\w)\1

问题是您正在使用(^|\s)的捕获组,而\1(\w)变为\2,因此您的正则表达式不起作用。

(?:..)是非捕获组,因此(\w)仍为\1(第一个捕获组)。

答案 1 :(得分:0)

(^|\s)(\w)\1+, it just doesn't work

@anubhava给了你答案 这个评论的例子也可能有所帮助。

 ( ^ | \s )        # (1), BOL or whitespace
 ( \w )            # (2), Word character
 \1+               # backreference to group 1 (BOL or whitespace)


 ( ^ | \s )        # (1), BOL or whitespace
 ( \w )            # (2), Word character
 \2+               # backreference to group 2 (Word character)