python的re,findall 忽略大小写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的re,findall 忽略大小写相关的知识,希望对你有一定的参考价值。
MD5: 19:B0:F3:26:EA:C1:24:B9:38:47:34:72:04:49:FC:0C
SHA1: E3:3C:24:73:87:49:FF:2D:F2:A1:EC:00:9E:FC:40:82:8C:5B:5C:2B
SHA256: 94:26:B5:CC:24:3B:B9:48:C6:5E:0D:BA:49:9A:43:99:95:62:EF:BF:14:0E:4B:9E:D9:4A:CF:E0:88:4C:19:BB
我实际需要的是 md5 值 即 19:B0:F3:26:EA:C1:24:B9:38:47:34:72:04:49:FC:0C
这一段,试图通过findall 函数来匹配,但是发现有个问题就是 md5 不确实是大写还是小写,所以希望能在 findall 函数中 指定 忽略大小写,谷歌无果,求助度娘。感谢
或者指示一条更简洁的方式 直接提取出 19:B0:F3:26:EA:C1:24:B9:38:47:34:72:04:49:FC:0C
没那几个人说的那么麻烦,只需要加一个参数,如下:
import re
SHA = 'AC:B0:F3:26:EA:C1'
result1 = re.findall(r'ac:.*:c1',SHA) # 这样是搜不到的,因为大小写不匹配
result2 = re.findall(r'ac:.*:c1',SHA,re.IGNORECASE) # 这是能搜到的,已忽略大小写
print('未忽略大小写搜索结果:',result1)
print('忽略大小写搜索结果:',result2)
结果:
参考技术B pattern = re.compile(r"(?i)MD5: *(\S+)")或
pattern = re.compile(r"MD5: *(\S+)", re.I)
然后
pattern.findall(text)本回答被提问者采纳 参考技术C 给你的正则前面加上一个(?i)就可以忽略大小写了
直接提取出md5值也是可以的, 你要给我具体一点的信息, 比如你搜索的string的例子
字符串忽略大小写的搜索和替换
需求:字符串忽略大小写搜索和替换
解决:
- 使用re.IGNORECASE
import re
text = 'UPPER PYTHON, lower python, Mixed Python'
f = re.findall("python", text, flags=re.IGNORECASE)
print(f)
s, n = re.subn("python","snake",text, flags=re.IGNORECASE)
print(s)
print(n) # 返回匹配的次数
缺陷
替换之后的字符串与被替换的大小写不能保持一致
解决:
def matchcase(word):
def replace(m): # 匹配的结果 如:PYTHON
text = m.group()
if text.isupper():
return word.upper()
elif text.islower():
return word.lower()
elif text[0].isupper():
return word.capitalize()
else:
return word
return replace
if __name__ == '__main__':
s = re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)
print(s)
以上是关于python的re,findall 忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章