Python正则表达式部分不区分大小写

Python正则表达式部分不区分大小写,python,regex,case-insensitive,Python,Regex,Case Insensitive,如何在很短的时间内做到这一点?我有两个字符串,我想在另一个字符串中搜索一个,但是: 小写字母与小写和大写字母匹配 大写字母仅与大写字母匹配。 例如: xiao匹配到xiao、xiao或xiao xiao xiao与xiao、xiao等匹配,但与xiao xiao不匹配您需要转换正则表达式,例如 def transform(regex): return ''.join([ "[%s%s]" % (c, c.upper()) if c.islower(

如何在很短的时间内做到这一点?我有两个字符串,我想在另一个字符串中搜索一个,但是:

小写字母与小写和大写字母匹配 大写字母仅与大写字母匹配。 例如:

xiao匹配到xiao、xiao或xiao


xiao xiao与xiao、xiao等匹配,但与xiao xiao不匹配

您需要转换正则表达式,例如

def transform(regex):
    return ''.join([
        "[%s%s]" % (c, c.upper())
            if c.islower()
            else c
        for c in regex
    ])


transformed = transform('Abcd')
将正则表达式Abcd转换为[bB][cC][dD]


当然,如果您的实际正则表达式已经有字符类[a-z],这是行不通的。

您需要转换正则表达式,比如

def transform(regex):
    return ''.join([
        "[%s%s]" % (c, c.upper())
            if c.islower()
            else c
        for c in regex
    ])


transformed = transform('Abcd')
将正则表达式Abcd转换为[bB][cC][dD]


当然,如果您的实际正则表达式已经有字符类[a-z],则这不起作用。

您可以使用以下函数:

>>> def match(s1,s2):
...    if len(s2)!=len(s2):
...          return False
...    else :
...          return all(i==j if i.isupper() else i==j.lower() for i,j in zip(s1,s2))
... 
演示:

>>> match('Abcd','aBcd')
False
>>> match('Abcd','ABcd')
True
>>> match('AbCd','ABcd')
False
>>> match('AbCd','ABCd')
True

在这个函数中,首先比较字符串的长度,然后需要比较字符串中的每个字母,这样就可以使用zip函数进行比较,所以,如果第一个字母是大写的,你只需要比较字母的大小,如果两者相等,第二个字母是大写的,就像第一个字母一样,但是如果第一个字母是小写的,你可以比较第一个字母和第二个字母的大小写

您可以使用以下功能:

>>> def match(s1,s2):
...    if len(s2)!=len(s2):
...          return False
...    else :
...          return all(i==j if i.isupper() else i==j.lower() for i,j in zip(s1,s2))
... 
演示:

>>> match('Abcd','aBcd')
False
>>> match('Abcd','ABcd')
True
>>> match('AbCd','ABcd')
False
>>> match('AbCd','ABCd')
True

在这个函数中,首先比较字符串的长度,然后需要比较字符串中的每个字母,这样就可以使用zip函数进行比较,所以,如果第一个字母是大写的,你只需要比较字母的大小,如果两者相等,第二个字母是大写的,就像第一个字母一样,但是如果第一个字母是小写的,你可以比较第一个字母和第二个字母的大小写

我要做的是遍历要匹配的字符串,如果找到小写字母,将正则表达式放入[character | character]使其不区分大小写,如果该字符已经是大写,则强制它为大写,保持原样即可

我创建了一个简单的测试,其中三个样本输出作为字符串来匹配,存储在input_string中,四个样本字符串用于匹配下面示例中存储在test_string中的内容

这将产生:

From input_string="abcd". Does AbCd match [aA][bB][cC][dD] ? True
From input_string="abcd". Does abcd match [aA][bB][cC][dD] ? True
From input_string="abcd". Does ABCD match [aA][bB][cC][dD] ? True
From input_string="abcd". Does ABcd match [aA][bB][cC][dD] ? True
From input_string="Abcd". Does AbCd match A[bB][cC][dD] ? True
From input_string="Abcd". Does abcd match A[bB][cC][dD] ? False
From input_string="Abcd". Does ABCD match A[bB][cC][dD] ? True
From input_string="Abcd". Does ABcd match A[bB][cC][dD] ? True
From input_string="abCD". Does AbCd match [aA][bB]CD ? False
From input_string="abCD". Does abcd match [aA][bB]CD ? False
From input_string="abCD". Does ABCD match [aA][bB]CD ? True
From input_string="abCD". Does ABcd match [aA][bB]CD ? False

我要做的是遍历要匹配的字符串,如果找到一个小写字母,则将正则表达式放入[character | character]中,使其不区分大小写,如果该字符已经是大写,则强制它为大写,保持原样即可

我创建了一个简单的测试,其中三个样本输出作为字符串来匹配,存储在input_string中,四个样本字符串用于匹配下面示例中存储在test_string中的内容

这将产生:

From input_string="abcd". Does AbCd match [aA][bB][cC][dD] ? True
From input_string="abcd". Does abcd match [aA][bB][cC][dD] ? True
From input_string="abcd". Does ABCD match [aA][bB][cC][dD] ? True
From input_string="abcd". Does ABcd match [aA][bB][cC][dD] ? True
From input_string="Abcd". Does AbCd match A[bB][cC][dD] ? True
From input_string="Abcd". Does abcd match A[bB][cC][dD] ? False
From input_string="Abcd". Does ABCD match A[bB][cC][dD] ? True
From input_string="Abcd". Does ABcd match A[bB][cC][dD] ? True
From input_string="abCD". Does AbCd match [aA][bB]CD ? False
From input_string="abCD". Does abcd match [aA][bB]CD ? False
From input_string="abCD". Does ABCD match [aA][bB]CD ? True
From input_string="abCD". Does ABcd match [aA][bB]CD ? False