Mhm*_*hmd 0 ruby regex pattern-matching
我试图使用正则表达式来匹配这样的模式:
(任何字母)(另一封信)(同一封信再次)
例如:
这些都是有效的例子:
aba
bcb
dbd
Run Code Online (Sandbox Code Playgroud)
这些都无效:
aab
aaa
bac
Run Code Online (Sandbox Code Playgroud)
我试图这样做:
(.)[^\1]\1
Run Code Online (Sandbox Code Playgroud)
但是,这仍然符合第二个字母与第一个字母相似的情况(例如:) aaa.见这里:http://rubular.com/r/TTGEcyhE9g
正则表达式中是否有匹配的方法any letter except the captured one?
反向引用在字符范围内无效.如下面的WiktorStribiżew所述,您在这里定义原始字符,在您的情况下是\x01(SOH,标题开头)字符.
作为一种解决方法,您可以使用负面预测,如下所示:
(.)(?!\1).\1
Run Code Online (Sandbox Code Playgroud)
在这里,您匹配任何未跟随相同字符(未被消费)的字符,后跟任何字符(但由于负前瞻而使用不同的字符),然后再次跟随第一个字符.
您可以在Ruby文档中了解有关lookahead和lookbehind的更多信息.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |