如果正则表达式模式在此正则表达式模式r"(?<=\s)|^)dont\s*"
之前,如何不捕获或检测匹配
这是要用于排除匹配项的模式。它正确地使用了lookbehind "(?<=\s|^)dont"
来检查单词"dont"
之前的空格或字符串的开始。这样可以确保单词“dont”前面没有空格或字符串开头以外的任何字符。
基本上,我希望实现的是,如果在原始模式之前有一个"dont"
,它有一个空格"\s"
或字符串"^"
的开头,那么它不会检测到匹配,因此也不会捕获捕获组。
import re
#example 1 with capture, because it does not match this part of the pattern (?<=\s)|^)
#input_text = "I think Idont like a lot red apples"
#example 2 not capture
input_text = "I think I dont like a lot red apples"
interests_match = re.search(r"(?:like\s*a\s*lot\s+(.+?)", input_text, flags = re.IGNORECASE)
if interests_match: print(interests_match.group(1))
字符串
每个示例的正确输出:
"red apples" #example 1
None #example 2
型
1条答案
按热度按时间yrwegjxp1#
这应该能满足你的要求
字符串
第二个
|
左侧的模式如果包含^dont
或\sdont
,则会跳过该行的其余部分,因此(.+)
不会捕获任何内容。注意:您需要检查组1匹配是否存在,以便不会出错。