正则需求:匹配句子开头的“Micky Mouse”,忽略换行与空格
解决方案
你需要调整正则表达式,确保仅匹配**紧跟在句号之后(中间可包含任意空白/换行)**的"Micky Mouse",具体实现如下:
修正后的代码
import re # 测试用例 string1 = "This is a sentence. Micky Mouse" string2 = "This is a sentence. \nMicky Mouse" string3 = "Hello Micky Mouse" # 此案例不应匹配 # 正则表达式:确保前面是句号,匹配句号后的任意空白,再匹配目标文本 name_pattern = re.compile(r"(?<=\.)\s*Micky Mouse") # 执行匹配 match1 = name_pattern.search(string1) match2 = name_pattern.search(string2) match3 = name_pattern.search(string3) print(match1) # 输出匹配对象(包含"Micky Mouse") print(match2) # 输出匹配对象(包含"Micky Mouse") print(match3) # 输出None(无匹配)
正则表达式说明
(?<=\.):正向肯定预查,确认当前位置的前一个字符是句号,且不会将句号包含在最终匹配结果中\s*:匹配任意数量的空白字符(包括空格、换行符\n、制表符\t等),支持零个或多个空白的场景Micky Mouse:精确匹配目标文本
这样修改后,就能严格满足你的需求:只有当"Micky Mouse"位于句号之后(中间允许任意空白/换行)时才会被匹配,单独出现的"Micky Mouse"不会触发匹配。
内容的提问来源于stack exchange,提问作者xxgaryxx
相关产品推荐
相关产品推荐

