gpt4 book ai didi

python - 如何将这些正则表达式合并为一个?

转载 作者:太空宇宙 更新时间:2023-11-04 15:54:08 24 4
gpt4 key购买 nike

(开始之前:我在 python 中执行此操作)

所以基本上我需要我的单个正则表达式来匹配我的 html QUOT 标签前后的所有引号:如果这些空格中存在引号,我需要它匹配。

例子:

<QUOT.START> Hello, this doesn't match! <\QUOT.END> 

"<QUOT.START> "Hello, this will call 4 matches! " <\QUOT.END> "

为此我有 4 个不同的正则表达式:

1.   \"+(?=<QUOT\.START>)

2. (?<=<QUOT\.START>)\"+

3. \"+(?=<\\QUOT\.END>)

4. (?<=<\\QUOT\.END>)\"+

我可以将这 4 个基本合并为一个吗?

最佳答案

如果您能够使用较新的 regex module (它支持无限后视)你可以将你的表达稍微浓缩成

(?<=<\\?QUOT\.(?:START|END)>[\t ]*)" # matches quotes after <quot.start> or <quot.end>
# plus whitespaces, eventually
|
"(?=[\t ]*<\\?QUOT\.(?:START|END)>) # before <quot.start> or <quot.end>,
# plus whitespaces eventually


没有详细模式:

(?<=<\\?QUOT\.(?:START|END)>[\t ]*)"|"(?=[\t ]*<\\?QUOT\.(?:START|END)>)


一般来说是这样的:

(?<=<tag><whitespaces, eventually>)quote|quote(?=<whitespaces, eventually><tag>)


Python 中:

import regex as re

string = """
<QUOT.START> Hello, this doesn't match! <\QUOT.END>
"<QUOT.START> "Hello, this will call 4 matches! " <\QUOT.END> "
"""

rx = re.compile(r'''(?<=<\\?QUOT\.(?:START|END)>[\t ]*)"|"(?=[\t ]*<\\?QUOT\.(?:START|END)>)''')

for m in rx.finditer(string):
print(m.group(0))
print(m.span())

这会显示四个引号及其位置。

关于python - 如何将这些正则表达式合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47312665/

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