正则表达式从段落中分别提取 header 和文本
Regex extract header and text separately from a paragraph
我想把 header 和它对应的文本分开,用定界符 colon
与段落分开。
示例段落,
“事件:快狐 运行 过去了。一架飞机撞到了头。结果与结论:我头疼,还发烧”
我期望的输出:[('INCIDENTS', 'Quick fox ran over. A plane drove the head'), ('RESULT AND CONCLUSION', 'I got headache, and fever')]
我正在使用 python 并尝试使用 re.findall(r'([A-Z]+:)(.*?)\.', <paragraph>)
。但是我没有得到预期的输出。
感谢任何帮助......
您可以使用
re.findall(r'\b([A-Z]+(?:\s+[A-Z]+)*):\s*(.*?)(?=\s*\b(?:[A-Z]+(?:\s+[A-Z]+)*):|$)', text)
详情
\b
- 字边界
([A-Z]+(?:\s+[A-Z]+)*)
- 第 1 组:一个大写单词,然后是零个或多个 whitespace-separated 个大写单词
:
- 冒号
\s*
- 0 个或更多空格
(.*?)
- 第 2 组:尽可能少的任何零个或多个字符
(?=\s*\b(?:[A-Z]+(?:\s+[A-Z]+)*):|$)
- 最多 0 个或多个空格、一个单词边界、一个大写单词,然后是零个或多个 whitespace-separated 个大写单词或字符串结尾。
我想把 header 和它对应的文本分开,用定界符 colon
与段落分开。
示例段落, “事件:快狐 运行 过去了。一架飞机撞到了头。结果与结论:我头疼,还发烧”
我期望的输出:[('INCIDENTS', 'Quick fox ran over. A plane drove the head'), ('RESULT AND CONCLUSION', 'I got headache, and fever')]
我正在使用 python 并尝试使用 re.findall(r'([A-Z]+:)(.*?)\.', <paragraph>)
。但是我没有得到预期的输出。
感谢任何帮助......
您可以使用
re.findall(r'\b([A-Z]+(?:\s+[A-Z]+)*):\s*(.*?)(?=\s*\b(?:[A-Z]+(?:\s+[A-Z]+)*):|$)', text)
详情
\b
- 字边界([A-Z]+(?:\s+[A-Z]+)*)
- 第 1 组:一个大写单词,然后是零个或多个 whitespace-separated 个大写单词:
- 冒号\s*
- 0 个或更多空格(.*?)
- 第 2 组:尽可能少的任何零个或多个字符(?=\s*\b(?:[A-Z]+(?:\s+[A-Z]+)*):|$)
- 最多 0 个或多个空格、一个单词边界、一个大写单词,然后是零个或多个 whitespace-separated 个大写单词或字符串结尾。