举例来说,我有以下数据:
ab
cd
ef
zy
ba
cd
我希望能够以匹配第一个字符的方式来匹配它,然后根据第一个字符的捕获组匹配第二个字符。
上面示例中的每一行都应该匹配,而类似cc
or af
不应该。
详细来说,我的想法看起来像这样:
(基于红宝石的正则表达式)
/^(?<first>[a-z])\g<first>$/
然而这匹配aa
or ac
这都是无效的,以及预期的ab
.
有没有办法修改捕获组,或者用与我的意图类似的语法包围它?
正则表达式中没有字符算术。你将不得不走很长的路,并将你的比赛表达为一个长交替:
ab|ba|bc|cb|....
您可以轻松优化它:
ab|b[ac]|c[bd]...y[xz]|zy
不必费心编写代码来生成它:编写整个字符串应该需要两分钟。 (当然,除非你是@NeilSlater 或@AmalMurali——请参阅评论。)
看吧,我已经在
ab|b[ac]|c[bd]|d[ce]|e[df]|f[eg]|g[fh]|h[gi]|i[hj]...y[xz]|zy
你完成它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)