gpt4 book ai didi

python - 如何捕获前瞻性后视正则表达式 python

转载 作者:太空狗 更新时间:2023-10-30 01:13:10 25 4
gpt4 key购买 nike

这是一个字符串:

str = "Academy \nADDITIONAL\nAwards and Recognition: Greek Man of the Year 2011 Stanford PanHellenic Community, American Delegate 2010 Global\nEngagement Summit, Honorary Speaker 2010 SELA Convention, Semi-Finalist 2010 Strauss Foundation Scholarship Program\nComputer Skills: Competency: MATLAB, MySQL/PHP, JavaScript, Objective-C, Git Proficiency: Adobe Creative Suite, Excel\n(highly advanced), PowerPoint, HTML5/CSS3\nLanguages: Fluent English, Advanced Spanish\n\x0c"

我想从“ADDTIONAL”捕获到“Languages”,所以我写了这个正则表达式:

regex = r'(?<=\n(ADDITIONAL|Additional)\n)[\s\S]+?(?=\n(Languages|LANGUAGES)\n*)'

但是它只捕获 ([\s\S]+) 之间的所有内容。它不会捕获 ADDTIONALLanguages。我在这里缺少什么?

最佳答案

你的正则表达式是

regex = r'(?<=\n(ADDITIONAL|Additional)\n)[\s\S]+?(?=\n(Languages|LANGUAGES)\n*)'

你的字符串是

Academy \nADDITIONAL\nAwards and Recognition: ... \nLanguages:
^^ ^^
|| ||
Match Position:-(?<=\n(ADDITIONAL|Additional)\n)(?=\n(Languages|LANGUAGES)\n*)

因此 [\s\S]+? 将包含这两个位置之间的内容,不包括 ADDITIONALLANGUAGES

您只需找到ADDITIONAL 的起始位置和LANGUAGES 的结束位置。这可以使用以下正则表达式完成

(?=\n(ADDITIONAL|Additional)\n)([\s\S]+?)(?<=\n(Languages|LANGUAGES)\b)

此外,如果您希望 [\s\S]+? 只捕获所有内容,那么您可以对 AdditionalLanguages 使用非捕获组

(?=\n(?:ADDITIONAL|Additional)\n)[\s\S]+?(?<=\n(?:Languages|LANGUAGES)\b)

Academy \nADDITIONAL\nAwards and Recognition: ... \nLanguages:
^^ ^^
|| ||
(?=\n(ADDITIONAL|Additional)\n) (?<=\n(Languages|LANGUAGES))

Python 代码

p = re.compile(r'(?=\n(?:ADDITIONAL|Additional)\n)[\s\S]+?(?<=\n(?:Languages|LANGUAGES)\b)', re.MULTILINE)
test_str = "Academy \nADDITIONAL\nAwards and Recognition: Greek Man of the Year 2011 Stanford PanHellenic Community, American Delegate 2010 Global\nEngagement Summit, Honorary Speaker 2010 SELA Convention, Semi-Finalist 2010 Strauss Foundation Scholarship Program\nComputer Skills: Competency: MATLAB, MySQL/PHP, JavaScript, Objective-C, Git Proficiency: Adobe Creative Suite, Excel\n(highly advanced), PowerPoint, HTML5/CSS3\nLanguages: Fluent English, Advanced Spanish\n\x0c"
print(re.findall(p, test_str))

Ideone Demo

关于python - 如何捕获前瞻性后视正则表达式 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853327/

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