为什么 exrex 会生成失败的正则表达式示例?

问题描述 投票:0回答:1
import re
import exrex


def test_re(re_str):
    for i in range(10):
        test_str = exrex.getone(re_str)
        res = re.fullmatch(re_str, test_str)
        if not res:
            print(f"FAIL: re_str {re_str} BAD: {test_str}")
            return False
    return True

# PASSES
assert test_re("^(    [A-Za-z])[A-Za-z0-9]{6,}$")

# FAILS
assert test_re("^(?=.*[A-Za-z])[A-Za-z0-9]{6,}$")
python regex exrex
1个回答
0
投票

第二个 RE 失败的原因是它包含一个 lookahead 断言:

前瞻断言“向前看”:它尝试匹配 具有给定模式的后续输入,但它不消耗任何 输入的位置 — 如果匹配成功,则为当前位置 输入保持不变。

特别是表达方式

?=.*
“向前看”。
exrex.getone
不支持此功能。

© www.soinside.com 2019 - 2024. All rights reserved.