当前位置:  开发笔记 > 编程语言 > 正文

如何使用Perl正则表达式找到重复的字母?

如何解决《如何使用Perl正则表达式找到重复的字母?》经验,为你挑选了4个好方法。

我正在寻找一个可以找到重复字母的正则表达式.所以任何两次或更多的字母,例如:

booooooot or abbott

我不会提前知道我要找的那封信.

这是我在采访中被问到的一个问题,然后在采访中被问到.没有那么多人认真对待.



1> Adam Bellair..:

你可以找到任何一个字母,然后用它\1来第二次(或更多)找到同一个字母.如果你只需要知道这封信,那么$1它将包含它.否则,您可以将第二个匹配连接到第一个匹配.

my $str = "Foooooobar";

$str =~ /(\w)(\1+)/;

print $1;
# prints 'o'
print $1 . $2;
# prints 'oooooo'



2> Keng..:

我认为你真的想要这个而不是"\ w",因为它包括数字和下划线.

([a-zA-Z])\1+

好的,好的,我可以暗示Leon.将此用于unicode-world或posix的东西.

([[:alpha:]])\1+


我们生活在一个unicode世界.[a-zA-Z]不会涵盖大多数语言.[[:alpha:]]会更正确.

3> hasseg..:

我认为使用反向引用会起作用:

(\w)\1+

\w基本上是[a-zA-Z_0-9]这样的,如果你只想匹配A和Z之间的字母(不区分大小写),请[a-zA-Z]改用.

(编辑:或者,像他的评论中提到的Tanktalus(以及其他人也回答过) [[:alpha:]],这是区域敏感的)



4> Jonathan Lon..:

使用\ N来引用以前的组:

/(\w)\1+/g

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有