小编csu*_*y95的帖子

与OR运算符匹配第一个规则后,Regex不会停止评估

我在python中有正则表达式匹配问题我有一个字符串如下:

test_str = ("ICD : 12123575.007787. 098.3,\n"
    "193235.1, 132534.0, 17707.1,1777029, V40‚0, 5612356,9899\n")
Run Code Online (Sandbox Code Playgroud)

我的正则表达式有两个主要组绑定在一起|,正则表达式如下:

  regex =   r"((?<=ICD\s:\s).*\n.*)|((?<=ICD\s).*)"
Run Code Online (Sandbox Code Playgroud)

让我们打电话给他们(A | B).哪里A = ((?<=ICD\s:\s).*\n.*)B = ((?<=ICD\s).*).根据文档的 |工作方式,如果A匹配,它将不会进一步B.

现在我的问题是,当我使用上面提到的正则表达式test_str.它匹配B但不适合A.但是如果我A只用正则表达式搜索(即((?<=ICD\s:\s).*\n.*)),那么test_string它与正则表达式匹配A.所以我的问题是,为什么A|B正则表达式与组不匹配A并停止.以下是我的python代码:

import re

regex = r"((?<=ICD\s:\s).*\n.*)|((?<=ICD\s).*)"

test_str = ("ICD : 12123575.007787. 098.3,\n"
    "193235.1, 132534.0, 17707.1,1777029, V40‚0, 5612356,9899\n")

matches = re.search(regex, test_str)
if …
Run Code Online (Sandbox Code Playgroud)

python regex

9
推荐指数
1
解决办法
315
查看次数

标签 统计

python ×1

regex ×1