我有一个关于正则表达式不区分大小写搜索的问题。以下是我编写的部分代码:
engType = 'XM665'
engType
的值是从其他文件中提取的。基于engType,我想在另一个文本文件中找到包含此部分的行,并从该行提取描述信息,描述部分将位于engType
字符串和'Serial'
之间。你知道吗
例如:
lines = ['xxxxxxxxxxx','mmmmmmmmmmm','jjjjj','xM665 Module 01 Serial (10-11)']
pat = re.compile(engType+'(.*?)[Ss][Ee][Rr][Ii][Aa][Ll]')
for line in lines:
des = pat.search(line).strip()
if des:
break;
print des.group(1).strip()
我知道结果将是一个错误,因为我的字符串engType
的大小写与'xM665 Module 01 Serial (10-11)'
中的大小写不同,我知道我可以使用[Ss]
来进行不区分大小写的比较,就像我在pat
的最后一部分所做的那样。但是,由于我的engType是一个变量,所以我不能将它应用于变量。我知道我可以用小写搜索,比如:
lines = ['xxxxxxxxxxx','mmmmmmmmmmm','jjjjj','xM665 Module 01 Serial (10-11)']
pat = re.compile(engType.lower()+'(.*?)serial')
for line in lines:
des = pat.search(line.lower()).strip()
if des:
break;
print des.group(1).strip()
结果:
module 01
现在的情况与Module 01
不同。如果我想保留这个案子,我该怎么办?谢谢您!你知道吗
退房忽略案例在http://docs.python.org/3/library/re.html
我相信它会像:
re.IGNORECASE
是您要查找的标志。你知道吗或者,更简单地说
re.compile(engType+'(.*?)serial',re.IGNORECASE)
。你知道吗还有,这行的bug:
删除
.strip()
;如果pat.search()
是None
,您将得到一个AttributeError
。你知道吗相关问题 更多 >
编程相关推荐