Skip to main content
 首页 » 编程设计

python之正则表达式完整单词模式

2024年08月13日35langtianya

我想获得包含完整单词而不是单词片段的模式。 例如。 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.