首页 > 解决方案 > 如何使用 ”。” 作为“字符串”中的通配符而不是模式?

问题描述

我有这个:

incompleted_string1 = "Thom"
incompleted_string2 = "s Mueller naive"
entire_string = 'Thom.s Mueller naive'  # <= dot means any char!!! I dont know which char is it
pattern = "mas M"

我想知道整个字符串中是否存在“mas M”。我不在乎是否"."等于“a”或其他东西。我无法更改模式字符串!

re.findall("mas M", entire_string)

这个回报[]我想拥有"mas M"True就足够了

谢谢您的帮助

标签: pythonregex

解决方案


您可以将每个字符替换pattern[+ this char + .+ ]

bool(re.search("".join([f"[{x}.]" for x in pattern]), entire_string))

模式看起来像[m.][a.][s.][ .][M.]这里,每个都可以匹配相应的字母或点。请参阅正则表达式演示

请参阅Python 演示

import re
incompleted_string1 = "Thom"
incompleted_string2 = "s Mueller naive"
entire_string = 'Thom.s Mueller naive'  # <= dot means any char!!! I dont know which char is it
pattern = "mas M"
print (bool(re.search("".join([f"[{x}.]" for x in pattern]), entire_string)) )
# => True

推荐阅读