繁体   English   中英

无限字符串的正则表达式

[英]Regular Expression for an infinite string

我正在尝试找出您是否可以为无限字符串的子字符串集提供正则表达式,例如,如果无限字符串是123123123123123123 ...

是否会有一个描述此的正则表达式,例如我尝试过(123) |(231) |(312)*,但由于我需要考虑字符串中的12和23而无法正常工作

将“无限”字符串定义为同一基本字符串<base>的无数个副本的串联(示例中为123 )。 从观察到任何子字符串按给定顺序出现以下部分开始:

  1. <base>后缀或空字符串
  2. <base> 0个或多个重复
  3. <base>前缀或空字符串

用正则表达式来说,

  1. 所有<base>后缀的可选替代
  2. Kleene运算符应用于<base>
  3. 所有<base>前缀的可选替代

特别:

(23|3)?(123)*(1|12)?

该解决方案明确允许使用空子字符串。 为了排除这种情况,前缀或后缀或中间部分不能为空。 这可以通过改变完整图案的不同变化来实现。

123|((23|3)(123)*(1|12)?)|((23|3)?(123)*(1|12))

我认为这是验证“模式”所能获得的最接近的结果 否则,如果您需要更多的可变性,则将(至少)需要通过选择编程语言来帮助中间层处理。

^(?<detectPattern>
  123
  |132
  |213
  |231
  |312
  |321
)\k<detectPattern>*$

该模式在结尾处使用参考来编写,以在视觉上解释其在开始时如何匹配。 否则,您可以轻松删除\\k<detectPattern> ,但保持*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM