Python Regex语法问题:在六个单词中匹配



我正在尝试在关键字的六个字中找到匹配。我正在尝试

regex_search = re.compile("(?=keyword)(s+S+|$){0,6}<match_string>")

,但这似乎对我不起作用,如下面的示例所示。

>>> search_string = "The dog happily ran after his ball" 
>>> regex_search = re.compile('(?<=ran)(s+S+|$){0,2}dog')
>>> print(re.search(regex_search, search_string))
None

我希望这将返回搜索对象。

dog出现在ran的右侧,因此您在这里不会有匹配。您可以使用一个交替组匹配randogdogran之间的内容:

rans+(?:S+s+){0,6}dog|dogs+(?:S+s+){0,6}ran

请参阅正则演示。

详细信息

  • ran -ran
  • s+-1 Whitespace Chars
  • (?:S+s+){0,6}-0至6的出现:
    • S+-1 非Whitespace Chars
    • s+-1 Whitespace Chars
  • dog- dog
  • |-或
  • dogs+(?:S+s+){0,6}ran-与上述类似,只有dogran切换。

请注意,要匹配dogran作为整个单词,您可以使用b

rx = r'brans+(?:S+s+){0,6}dogb|bdogs+(?:S+s+){0,6}ranb'

在声明正则表格模式时,依靠原始字符串文字是最好的做法,请注意r前缀(因此,无需在b中逃脱(。

最新更新