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

正则表达式可以匹配相同字符的序列?

如何解决《正则表达式可以匹配相同字符的序列?》经验,为你挑选了2个好方法。

一位朋友问我这个问题,我很难过:有没有办法制作一个匹配同一个字符序列的正则表达式?例如,匹配'aaa','bbb',但不是'abc'?

m|\w{2,3}| 

不会这样做,因为它匹配'abc'.

m|a{2,3}| 

不会做的伎俩,因为它不匹配'bbb','ccc'等.



1> David Hanak..:

当然可以!分组和引用是你的朋友:

(.)\1+

将匹配2个或更多相同字符的出现.仅对于单词构成字符,请使用\w而不是.,即:

(\w)\1+



2> oylenshpeegu..:

请注意,在Perl 5.10中,我们还有反向引用的替代符号.

foreach (qw(aaa bbb abc)) {
  say;
  say ' original' if /(\w)\1+/;
  say ' new way'  if /(\w)\g{1}+/;
  say ' relative' if /(\w)\g{-1}+/;
  say ' named'    if /(?'char'\w)\g{char}+/;
  say ' named'    if /(?\w)\k+/;
}

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