【发布时间】:2019-05-03 14:49:36
【问题描述】:
我正在做一个关于正则表达式前向引用的练习,就像here提出的那样。
任务是:
- 字符串 s 由 tic 或 tac 组成
- tic 不应该是它自己的直接邻居
- 第一个 tic 必须在 tac 之前至少出现两次时出现
我用这个regex 来解决它。但它不使用forward reference,所以我真的很想知道如何使用它来解决这个问题。
^tac(tac)+(tic(tac)+){0,}(tic)?$
有效:
tactactic
tactactictactic
无效:
tactactictactictictac
tactictac
我该如何解决这个问题?
【问题讨论】:
-
您自己的正则表达式无法匹配开头有两个以上
tacs 的字符串,例如tactactactic。您已经得到了答案,但在性能方面,您应该选择更轻的正则表达式:^(tac)(\1+tic)+\1*$ -
@revo 这也是一个很好的解决方案,为什么不发布呢?
-
@Thefourthbird 我觉得它没有回答这个问题,因为 OP 明确要求提供一个涉及前向引用的解决方案,该解决方案已经给出。
-
@revo 你说得对,我猜这个练习没有足够的案例。你的也很好用。
标签: regex