我正在寻找一个可以找到重复字母的正则表达式.所以任何两次或更多的字母,例如:
booooooot or abbott
我不会提前知道我要找的那封信.
这是我在采访中被问到的一个问题,然后在采访中被问到.没有那么多人认真对待.
你可以找到任何一个字母,然后用它\1
来第二次(或更多)找到同一个字母.如果你只需要知道这封信,那么$1
它将包含它.否则,您可以将第二个匹配连接到第一个匹配.
my $str = "Foooooobar"; $str =~ /(\w)(\1+)/; print $1; # prints 'o' print $1 . $2; # prints 'oooooo'
我认为你真的想要这个而不是"\ w",因为它包括数字和下划线.
([a-zA-Z])\1+
好的,好的,我可以暗示Leon.将此用于unicode-world或posix的东西.
([[:alpha:]])\1+
我认为使用反向引用会起作用:
(\w)\1+
\w
基本上是[a-zA-Z_0-9]
这样的,如果你只想匹配A和Z之间的字母(不区分大小写),请[a-zA-Z]
改用.
(编辑:或者,像他的评论中提到的Tanktalus(以及其他人也回答过) [[:alpha:]]
,这是区域敏感的)
使用\ N来引用以前的组:
/(\w)\1+/g