【发布时间】:2018-12-17 00:22:36
【问题描述】:
我正在尝试使用正则表达式来匹配这样的模式:
(任何字母)(不同的字母)(再次出现相同的字母)
例如:
这些都是有效的例子:
aba
bcb
dbd
这些无效:
aab
aaa
bac
我正在尝试这样做:
(.)[^\1]\1
但是,这仍然匹配第二个字母与第一个字母相似的情况(例如:aaa)。见这里:http://rubular.com/r/TTGEcyhE9g
正则表达式中有没有办法匹配any letter except the captured one?
【问题讨论】:
-
您确定
[^\1]是否有效?我的理解是不能将反向引用放入字符类中,因为后者需要一个硬编码的字符列表。 -
我明白了,也许这就是问题所在。在这种情况下我该怎么办?
-
使用前瞻限制字符:
/(.)(?!\1).\1/. -
@WiktorStribiżew 不错的一个......这可能是一个答案:-)
标签: ruby regex pattern-matching