一位朋友问我这个问题,我很难过:有没有办法制作一个匹配同一个字符序列的正则表达式?例如,匹配'aaa','bbb',但不是'abc'?
m|\w{2,3}|
Run Code Online (Sandbox Code Playgroud)
不会这样做,因为它匹配'abc'.
m|a{2,3}|
Run Code Online (Sandbox Code Playgroud)
不会做的伎俩,因为它不匹配'bbb','ccc'等.
Dav*_*nak 85
当然可以!分组和引用是你的朋友:
(.)\1+
Run Code Online (Sandbox Code Playgroud)
将匹配2个或更多相同字符的出现.仅对于单词构成字符,请使用\w
而不是.
,即:
(\w)\1+
Run Code Online (Sandbox Code Playgroud)
oyl*_*gul 10
请注意,在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 /(?<char>\w)\k<char>+/;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41189 次 |
最近记录: |