gpt4 book ai didi

python - 在 Python 中使用 Regex 从 OR 运算符捕获替代字符串?

转载 作者:行者123 更新时间:2023-11-28 19:20:08 26 4
gpt4 key购买 nike

我想捕获字符串的特定部分,其中有替代的 Regex 分支。我怎样才能安全地引用替代路径中定义的点。我想过做

m=re.match("(A(?P<name>.+)B|C(?P<name>.+)D)", text)
match=m.group("name")

但是重新定义名字有冲突。通过索引使用 m.group 会很麻烦,因为这些正则表达式来自配置文件,我无法保证会导致匹配的嵌套级别/索引值。

编辑:在设置中,有来自不同来源的要匹配的文本和正则表达式。我想实现

import re

for text in ["ABBC", "DEEEF", "GHHI"]:
for regex in ["(A(.+)C|D(.+)F)", "G(.+)I"]:
m=re.match(regex, text)
if m:
print(m.group(1)) # should actually match the middle characters, but doesn't work generally
break

future 可能的正则表达式的数量会增加,所以它必须是一个通用的解决方案

最佳答案

一个可能的解决方案是使用先行断言。如果将 (A(.+)C|D(.+)F) 正则表达式替换为

^(?=A.+C$|D.+F$)[A-Z](.+)[A-Z],那么 group(1) 将一般匹配中间字符。

它说:如果您在字符串 (^) 的开头并且 (?=...) 中的一个先行断言成功,则匹配 [A-Z](.+)[A-Z] 字符串。

关于python - 在 Python 中使用 Regex 从 OR 运算符捕获替代字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27377223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com