【问题标题】:Python regex look-behind strange behaviour with character '^' [duplicate]带有字符'^'的Python正则表达式后视奇怪行为[重复]
【发布时间】:2020-10-08 14:40:31
【问题描述】:

在 Python 的正则表达式中:如果 regex2 没有,为什么 regex1 会抱怨固定宽度的后视? ^(开始标记)是否超过 1 个字符?

正则表达式1

(?<=^|b)[0-9]

正则表达式2

(?<=a|b)[0-9]

可在https://regex101.com/r/L5J47R/2中重现

【问题讨论】:

  • ^ 是零宽度匹配,Python 正则表达式引擎不支持后视中的零交替和非零交替。

标签: python python-3.x regex


【解决方案1】:

第一个正则表达式在 Python 中不起作用的原因是,^ 是一个零宽度匹配,并且 Python 正则表达式引擎不支持后向断言中的零交替和非零交替。

但其他引擎(例如 Java、PHP、Perl、C# 等)也支持此功能。

要解决这个问题,你可以使用这个正则表达式:

(?:^|(?<=b))[0-9]

RegEx Demo

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多