我想获得包含完整单词而不是单词片段的模式。 例如。 12345 [一些词] 1234567 [一些词] 123 1679。随机文本和模式再次出现 1111 123 [word] 555。
这应该返回
[[12345, 1234567, 123, 1679],[1111, 123, 555]]
我只能容忍数字之间有一个单词,否则整个字符串都会匹配。 另请注意,重要的是要捕获找到的 2 个匹配项,因此会返回一个包含两个元素的列表。
我在 python3 中运行它。 我试过:
\b(\d+)\b\s\b(\w+)?\b\s\b(\d+)\b
但我不确定如何将其扩展到不受限制的匹配数。
re.findall('\b(\d+)\b\s\b(\w+)?\b\s\b(\d+)\b', string)
这匹配 [number] [word] [number] 但不匹配后面有或没有单词的任何数字。
请您参考如下方法:
您是否期待 re.findall()返回列表列表?它只会返回一个列表 - 无论您使用什么正则表达式。
一种方法是将输入的字符串拆分成句子,然后循环遍历它们
import re
inputArray = re.split('<pattern>',inputText)
outputArray = []
for item in inputArray:
outputArray.append(re.findall('\b(\d+)\b\s\b(\w+)?\b\s\b(\d+)\b', item))
the trick is to find a
<pattern>to split your input.
