【问题标题】:extract few words before and after the specific word regex in Python?在Python中的特定单词正则表达式之前和之后提取几个单词?
【发布时间】:2018-04-06 08:50:01
【问题描述】:
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 个单词。如果 white 后面没有三个单词,那么至少得到所有存在的单词。

【问题讨论】:

标签: regex python-3.x


【解决方案1】:

您可以通过在 white 之后的单词的子模式中添加单词边界 \b 并设置空格来修复它

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

Demo

【讨论】:

    【解决方案2】:

    试试这个

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

    (?:\S+\s+){3,}\bwhite\b 在“白色”一词之前最少 3 个单词

    s*(?:\S+\b\s*){3,} 至少 3 个字后

    Demo

    【讨论】:

      【解决方案3】:

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

      然后匹配“白色”,然后匹配一个空白字符和一个或多个单词字符并重复 0 - 3 次 {0,3},因此如果后面有 3 个或更少的单词,您将匹配该字符。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-26
        • 2019-04-10
        相关资源
        最近更新 更多