如果相同的辅音重复三次或更多次,我如何使用regex expression
进行检测?
我的想法是匹配tttool
或likkke
或likkkkke
答案 0 :(得分:21)
试试这个:
([b-df-hj-np-tv-z])\1{2,}
说明:
[b-df-hj-np-tv-z]
都是辅音\1
是对第一组的反向引用(即相同的字符){2,}
表示“前一个词中的2个或更多个”,共计3个或更多经过测试,这可行。
答案 1 :(得分:7)
这是关于我能想到的最短的正则表达式:
(?i)([b-z&&[^eiou]])\1\1+
这使用正则表达式字符类减法来排除元音。
我没有提到“a”,因为我从“b”开始了范围
使用(?i)
会使正则表达式不区分大小。
查看live demo。
答案 2 :(得分:6)
某些正则表达式库中可能有快捷方式,但您可以随时...
b{3,}|c{3,}|d{3,}...
例如,某些lib允许您使用后引用进行匹配,后引用可能有点清洁......
(bcd...)\1{2,}
答案 3 :(得分:2)
来自更高[b-df-hj-np-tv-z])\1{2,}
的答案的正则表达式有错误(" y"是雾霾)
应为[b-df-hj-np-tv-xz])\1{2,}
答案 4 :(得分:0)
您可以将捕获组与反向引用一起使用。这将捕获重复的符号:
/(
([\w]) ## second group is just one symbol
\2 ## match symbol found in second groups
\2+ ## match same symbol one or more times
)/x ## x is just to allow inner comments
但并非所有regexp引擎都支持反向引用。
答案 5 :(得分:0)
我个人会反向解决这个问题;而不是使用[b-df-hj-np-tv-z]
,而是使用双负数[^\W_aeiou]
。
/([^\W_aeiou])\1\1+/i
这有一个使用双负号的字符类:匹配除非单词字符,下划线或元音之外的所有字符。忽略非ASCII元音,只有辅音可以匹配。保存匹配项后,正则表达式将查找相同辅音(不区分大小写)的匹配项,然后再匹配一个或多个,从而使我们获得3个以上连续的辅音。