gpt4 book ai didi

python - 如何将管道(正则表达式或)应用于特定的模式子字符串,以便它匹配后跟一组字符或 EOL 的组?

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

我有一串问题和答案,我想按问题拆分。

s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
re.split('(Q\d.*?)Q\d', s)

结果:

['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']

我想捕获以“Q#”开头并后跟另一个“Q#”或行尾的部分。所以我尝试使用这个:

re.split('(Q\d.*?)Q\d|$', s)
['', 'Q1 blah1 Ans BLAH1 ', ' blah2 Ans BLAH2']

还有这个:

re.split('(Q\d.*?)(Q\d|$)', s)
['', 'Q1 blah1 Ans BLAH1 ', 'Q2', ' blah2 Ans BLAH2']

但是,他们没有给我想要的结果。由于|使用不当,第一种情况下它不起作用,但我不知道如何纠正它。在第二种情况下,Q2 不会与 blah2 Ans BLAH2 一起被捕获。

编辑:

期望的输出:

['', 'Q1 blah1 Ans BLAH1 ', 'Q2 blah2 Ans BLAH2']

最佳答案

尝试按以下模式拆分:

\s+(?=Q\d+)

这使用了一个积极的前瞻断言,它断言但不消耗下一个问题正在开始。

s = 'Q1 blah1 Ans BLAH1 Q2 blah2 Ans BLAH2'
print re.split('\s+(?=Q\d+)', s)

['Q1 blah1 Ans BLAH1', 'Q2 blah2 Ans BLAH2']

Demo

关于python - 如何将管道(正则表达式或)应用于特定的模式子字符串,以便它匹配后跟一组字符或 EOL 的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206354/

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