我正在像正题here一样进行正则表达式前向引用的练习。

任务是:


字符串s由tic或tac组成
tic不应与其自身直接相邻
仅当tac至少出现两次之前才发生第一次抽动


我已经用这个regex解决了。但是它不使用forward reference,所以我真的很想知道如何使用它来解决这个问题。

^tac(tac)+(tic(tac)+){0,}(tic)?$


有效:

tactactic
tactactictactic


无效:

tactactictactictictac
tactictac


我该如何解决这个问题?

最佳答案

这使用了前向参考:

^(\2tic|(tac))+$


Demo

实际上,它与this page上给出的示例非常相似。

10-06 00:29