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个字。如果白色之后没有三个词,那么至少得到那里的所有词。
答案 0 :(得分:0)
答案 1 :(得分:0)
试试这个
((?:\S+\s+){3,}\bwhite\b\s*(?:\S+\b\s*){3,})
(?:\S+\s+){3,}\bwhite\b
在“white”之前最少3个字
s*(?:\S+\b\s*){3,}
<强> Demo 强>
答案 2 :(得分:0)
也许您可以匹配一个或多个单词字符\w+
后跟空格字符\s
,并重复3次{3}
以匹配单词“white”之前的3个单词。
然后匹配“白色”,然后匹配一个空格字符和一个或多个单词字符并重复0 - 3次{0,3}
,所以如果有3个或更少的单词,则匹配该字符。< / p>