在Python中特定单词regex之前和之后提取几个单词?

时间:2018-04-06 08:50:01

标签: regex python-3.x

r'((?:\S+\s+){0,3}\bwhite\b\s*(?:\S+\s+){0,3})

以下句子的上述正则表达式的结果是

sentence = This is a white floral garment.
result = This is a white floral

但我希望结果为

wanted result = This is a white floral garment

我想在白字前后3个字。如果白色之后没有三个词,那么至少得到那里的所有词。

3 个答案:

答案 0 :(得分:0)

您可以通过在\b之后为单词添加单词边界white并使空格可选来修复它

((?:\S+\s+){0,3}\bwhite\b\s*(?:\S+\b\s*){0,3})

Demo

答案 1 :(得分:0)

试试这个

((?:\S+\s+){3,}\bwhite\b\s*(?:\S+\b\s*){3,})

(?:\S+\s+){3,}\bwhite\b在“white”之前最少3个字

最少3个字之后

s*(?:\S+\b\s*){3,}

<强> Demo

答案 2 :(得分:0)

也许您可以匹配一个或多个单词字符\w+后跟空格字符\s,并重复3次{3}以匹配单词“white”之前的3个单词。

然后匹配“白色”,然后匹配一个空格字符和一个或多个单词字符并重复0 - 3次{0,3},所以如果有3个或更少的单词,则匹配该字符。< / p>

(?:\w+\s){3}white(?:\s\w+){0,3}

相关问题