如何使用正则表达式在字符串中查找相同连续字符的出现次数?

3

如何使用正则表达式或函数在字符串中查找相同的连续字符?

例如:

我是一个厉害的l​ee​t,我有三个pi​zz​a。那个菜鸟只有一个pi​zz​a。可怜的男孩。

5个回答

2
你可以使用反向引用
/(.)\1/

如果您想查找长度为两个或更多的序列,请将 \1 更改为 \1+

请注意,语法可能因您使用的正则表达式引擎而异。


有点晚了,但还是谢谢你的回答 :-) - MC Emperor

1

不确定您正在使用哪个版本的正则表达式,但对于egrep,可以使用以下方法:

egrep '(.)\1' < file

这将显示所有连续出现两次的字符行。如果您只想查看字母:

egrep `([A-Za-z])\1' < file

会起作用。


0

在谷歌上搜索:“双字符正则表达式”

这是我用你的正则表达式制作的重新调整:http://refiddle.com/2fa


0

在 Perl 中,可以这样写:\w 匹配单词字符,\2 匹配第二个括号。

m/((\w)\2+)/g

2
你为什么需要第一个捕获组? - user557597
@sln:我使用它来获取所有连续的字母作为第一组($1\1)。我本可以避免这样做。 - Birei
嗯,使用 Perl 的 $& 可能会减慢速度;如果在 while(m/(())/g) 中使用,则可能更好,但 @ary = m/(())/g 可能会存储额外的数据。 - user557597

0

这应该可以工作................ (.)\1+


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接