提问人:user1753640 提问时间:11/16/2023 更新时间:11/16/2023 访问量:52
Python 正则表达式提取数字之间的段落文本
Python Regex extract paragraph text between number
问:
我有如下文本,我只想提取文本
1. foobar
2. foo
3. bar
结果应为 。[foobar, foo, bar]
什么python正则表达式会提取我想要的结果?我尝试了以下方法,但没有运气
r'\d+.*?(?=\d|$)'
答:
1赞
The fourth bird
11/16/2023
#1
您可以锚定字符串、转义点并在其后匹配可选空格。 然后,您可以捕获当前行的其余部分,然后继续匹配所有不以数字和点开头的行。
要获取这些值,您可以使用 re.findall,它将返回捕获组的值。
^\d+\.[^\S\n]*(.*(?:\n(?!\d+\.).*)*)
仅单行:
^\d+\.[^\S\n]*(.*)
如果你不想要尾随换行符,你可以去掉它们:
import re
pattern = r"^\d+\.[^\S\n]*(.*(?:\n(?!\d+\.).*)*)"
s = ("1. foobar\n\n"
"2. foo\n\n"
"3. bar\ntest\n\n")
print([x.strip() for x in re.findall(pattern, s, re.M)])
输出
['foobar', 'foo', 'bar\ntest']
1赞
Daniel Zin
11/16/2023
#2
import re
text="""1. foobar
2. foo
3. bar"""
matcher=re.compile(r'\d+\.\s+(\w+)')
result=matcher.findall(text) # result is ['foobar', 'foo', 'bar']
python 文档的解释: 如果正则表达式中只有一个捕获组,则 findall 将返回与该组匹配的字符串列表。
评论