我有两个查询字符串,它们都包含通配符。我们可以检查两个查询字符串中是否存在任何一个,如下所示:
import re
def wildcards2regex (pattern):
return ( pattern.replace('?', '[a-zA-Z]{1}').replace('*', '.*') )
string = 'christopher susan'
s1='chris*'
r1 = wildcards2regex(s1)
s2 = 'sus??'
r2 = wildcards2regex(s2)
q = r1+'|'+r2
bool(re.search(q, string))
现在我想知道如果我想检查两个查询字符串是否都存在该怎么办?显然替换了“|”与 '&' 不起作用。有谁知道如何实现这一目标?
最佳答案
您可以考虑以下代码:
>>> import re
>>> def wildcards2regex (pattern):
... return ( pattern.replace('?', '[a-zA-Z]').replace('*', '.*') )
...
>>> string = 'christopher susan'
>>> s1='chris*'
>>> r1 = wildcards2regex(s1)
>>> s2 = 'sus??'
>>> r2 = wildcards2regex(s2)
>>> q = re.compile(r'(?=.*{})(?=.*{})'.format(r1, r2))
>>> bool(re.search(q, string))
True
记下这个正则表达式构建:
q = re.compile(r'(?=.*{})(?=.*{})'.format(r1, r2))
这里我们正在构建一个正则表达式,其中使用 positive lookahead assertions 定义了 2 个条件。断言您的两个查询字符串。
关于python - 如何使用 python 中的正则表达式检查两个查询字符串(带通配符)是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66486501/