gpt4 book ai didi

python - 识别正则表达式中的新行

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

我想对来自 MAcbeth 的文本执行一些正则表达式

我的文字如下:

Scena Secunda.

Alarum within. Enter King Malcome, Donalbaine, Lenox, with
attendants,
meeting a bleeding Captaine.

King. What bloody man is that? he can report,
As seemeth by his plight, of the Reuolt
The newest state

我的目的是让文本从 Enter 到句号。

我正在尝试这个正则表达式Enter(.?)*\.

但它没有显示任何匹配项。有人可以修复我的正则表达式吗?

我正在这个link中尝试一下

最佳答案

由于@Tushar 没有解释您的正则表达式所遇到的问题,我决定对其进行解释。

您的正则表达式 - Enter(.?)*\. - 匹配单词 Enter (字面意思),然后可选择匹配除换行符之外的任何字符 0 次或多次,尽可能多,直到最后一个时期。

问题是您的字符串在 Enter 和句点之间包含换行符。您还需要一个正则表达式模式来匹配换行符。要强制 . 匹配换行符,您可以使用 DOTALL 模式。但是,它不会为您提供预期的结果,因为 * 量词是贪婪(将返回最长的可能子字符串)。

因此,要获取从 Enter 到最接近的句点的子字符串,您可以使用

Enter([^.]*)

参见this regex demo 。如果您不需要捕获组,请将其删除。

还有一个IDEONE demo :

import re
p = re.compile(r'Enter([^.]*)')
test_str = "Scena Secunda.\n\nAlarum within. Enter King Malcome, Donalbaine, Lenox, with\nattendants,\nmeeting a bleeding Captaine.\n\n King. What bloody man is that? he can report,\nAs seemeth by his plight, of the Reuolt\nThe newest state"
print(p.findall(test_str)) # if you need the capture group text, or
# print(p.search(test_str).group()) # to get the whole first match, or
# print(re.findall(r'Enter[^.]*', test_str)) # to return all substrings from Enter till the next period

关于python - 识别正则表达式中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33520375/

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