我一直在尝试学习正则表达式,有时我遇到一些我很难理解的东西。
今天早些时候我试图在空格或行首之后匹配一对重复的字符,所以我首先找到了匹配空格或行首的方法:(^|\s)
然后,匹配一对(字母数字)字符:(\w)\1+
两者都很有效,但是当我把它们组合在一起(^|\s)(\w)\1+
时,它就不起作用了。
你知道为什么这是错的,实现我想要的最好的方法是什么?
顺便说一句,我正在使用this website来测试我的表达式。
非常感谢!
答案 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)