【问题标题】:Longest substring that doesn't match a REGEX pattern与 REGEX 模式不匹配的最长子字符串
【发布时间】:2022-06-10 19:58:11
【问题描述】:

我正在准备考试,任务如下: 给定一个由英文大写字母组成的字符串,找出其中不包含QWWQ的最长子字符串。

我知道我可以做到re.split 或类似的事情,但我让我遇到了一个挑战,用像len(max(re.findall(...), key=len)) 这样的“正则表达式匹配” 表达式来做到这一点没有 使用split 或其他方法。有没有可能?

为了找到 所有 个匹配的子字符串,我尝试了这个:

list(map(lambda x: x[0], re.findall(r'(((?<!QW|WQ).)+(?!QW|WQ))', text))

但是这个确实匹配一个以WQ结束结束的子字符串,例如。我该如何解决这个问题?

【问题讨论】:

  • 您可以使用 finditer 代替 findall 并在匹配对象中引用适当的组。

标签: python regex


【解决方案1】:

你可以使用

(?:[A-Z](?<!QW|WQ)(?<!Q(?=W)|W(?=Q)))+

请参阅regex demo

【讨论】:

    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多