gpt4 book ai didi

python - 非捕获组未按预期工作的正则表达式前瞻

转载 作者:行者123 更新时间:2023-12-04 08:50:44 25 4
gpt4 key购买 nike

下面我有我想从中提取月份的文本(在这种情况下是 7 月)。word_pattern确保文本包含这些词,
month_pattern将提取月份。所以首先我验证文本段落
包含某些单词,如果包含,那么我尝试提取 month当模式单独使用时,它们会匹配,但如果我尝试将它们组合起来
我最终没有匹配项。
我无法弄清楚我做错了什么。

import re

text = ''' The number of shares of the
registrant’s common stock outstanding as
of July 31, 2017 was 52,833,429.'''

# patterns
word_pattern = r'(?=.*outstanding[.,]?)(?=.*common)(?=.*shares)'

month_pattern = r'(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)'


pattern = word_pattern + month_pattern

print(re.search(pattern, text, flags = re.IGNORECASE|re.DOTALL))
预期结果:

最佳答案

正则表达式不能像那样简单地连接起来。问题是您的单词模式仅使用前瞻,因此不会向前移动位置,这在月份仅出现在字符串中时会成为问题。因此,您需要使用弥合差距的量词让光标前进到月份位置,例如.*尝试

(?=.*outstanding[.,]?)(?=.*common)(?=.*shares).*(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|(Nov|Dec)(?:ember)?)
Demo
pattern = word_pattern +'.*'+ month_pattern应该做的伎俩。
结果可以在捕获组 1 中找到: re.search(...).group(1)

关于python - 非捕获组未按预期工作的正则表达式前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64111606/

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