2011-04-27 58 views
1

我正在使用下面的正则表达式来匹配三种不同类型的字符串。我有确定的难度在哪里添加不区分大小写的模式,以re.IGNORECASE([A-Za-z0-9]+))匹配大写或小写(例如,如果我只是尝试不同的东西?我想实现一个有效的正则表达式模式

regex = re.compile("(%s|%s|%s)" % (re.escape(userstring), re.escape(userStrHEX), re.escape(userStrASCII)) 

回答

5

只需将其添加为第二参数re.compile()

x = re.compile("(%s|%s|%s)" % (re.escape(userstring), re.escape(userStrHEX), re.escape(userStrASCII)), re.IGNORECASE) 

为了使它有点更容易阅读,我们可以提取格式化参数到一个单独的元组:

args = (re.escape(userstring), re.escape(userStrHEX), re.escape(userStrASCII)) 
x = re.compile("(%s|%s|%s)" % args, re.IGNORECASE) 
+1

@ user706808 @unwind或''args = tuple(map(re.escape,(userstring,userStrHEX,userStrASCII)))'' – eyquem 2011-04-27 17:11:05

+0

@eyquem谢谢...非常经济的方法! – suffa 2011-04-27 17:53:45