我正在尝试在关键字的六个字中找到匹配。我正在尝试
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
的右侧,因此您在这里不会有匹配。您可以使用一个交替组匹配ran
和dog
或dog
和ran
之间的内容:
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
-与上述类似,只有dog
用ran
切换。
请注意,要匹配dog
和ran
作为整个单词,您可以使用b
:
rx = r'brans+(?:S+s+){0,6}dogb|bdogs+(?:S+s+){0,6}ranb'
在声明正则表格模式时,依靠原始字符串文字是最好的做法,请注意r
前缀(因此,无需在b
中逃脱(。