【问题标题】:Regex matching all subsequences, repeating characters正则表达式匹配所有子序列,重复字符
【发布时间】:2016-04-01 11:40:37
【问题描述】:

例如让我们采取序列

"aaaaaa". 

我希望正则表达式匹配所有子序列,包括重复字符。这意味着子序列的总数应该是 5,而不是 3。

澄清:

让我们计算我们的角色。我们的序列看起来像

"a1a2a3a4a5a6"

所有子序列是:

"a1a2", "a2a3". "a3a4", "a4a5", "a5a6"

我可以在正则表达式中做到这一点吗?我目前正在使用 Java 编程,我知道可以在那里开发一种算法,但我现在想避免这种情况。

【问题讨论】:

  • stackoverflow.com/questions/5616822/… 可以帮助您开始。
  • 我知道这在 java 中是可能的,但是我目前的技能会很混乱,所以我问它是否是正则表达式中的一个选项,因为对我来说拥有这样一个选项似乎是合乎逻辑的选项。我会编辑得更清楚。
  • (?=((a)\2)) - 值在第 1 组中。
  • @WiktorStribiżew 谢谢,它有效。但是,你能解释一下到底是怎么回事。我向前看是积极的,但仍然无法理解你的表达是如何运作的。
  • 编程语言是什么?你用的是什么方法?

标签: regex sequence subsequence


【解决方案1】:

您可以使用以下正则表达式:

(?=((a)\2))

demo

here 描述了在正向前瞻中捕获重叠子字符串的技术。

不同之处在于您需要使用 2 个捕获组:一个是“功能性”、技术性的内部组,以确保我们匹配两个相同的连续符号,而外部组 (ID#1) 可以用来提取我们需要的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多