Python正则表达式语法问题:在六个单词内匹配

2024-03-28 21:39:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在一个关键字的六个字内找到一个匹配项。我正在努力

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

我希望它返回一个搜索对象


Tags: theresearchstringmatch关键字keyword例子
1条回答
网友
1楼 · 发布于 2024-03-28 21:39:20

dog出现在ran的右边,因此这里没有匹配项。您可以使用替换组来匹配randogdogran之间的内容:

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

参见regex demo

细节

  • ran-ran
  • \s+-1+空格字符
  • (?:\S+\s+){0,6}-0到6次出现:
    • \S+-1+非空白字符
    • \s+-1+空格字符
  • dog-adog
  • |-或
  • dog\s+(?:\S+\s+){0,6}ran-与上面类似,只是dogran切换

请注意,要将dogran作为整词进行匹配,可以使用\b

rx = r'\bran\s+(?:\S+\s+){0,6}dog\b|\bdog\s+(?:\S+\s+){0,6}ran\b'

在声明regex模式时,最佳实践是依赖原始字符串文本,注意r前缀(因此,不需要在\b中转义\

相关问题 更多 >