Answers:
re.escape()
为此使用函数:
转义(字符串)
返回所有非字母数字加反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,则此功能很有用。
一个简单的示例,搜索提供的字符串的任何出现情况(可选)后跟“ s”,然后返回匹配对象。
def simplistic_plural(word, text):
word_or_plural = re.escape(word) + 's?'
return re.match(word_or_plural, text)
您可以使用re.escape():
re.escape(string)返回所有非字母数字加反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,则此功能很有用。
>>> import re
>>> re.escape('^a.*$')
'\\^a\\.\\*\\$'
不幸的是,re.escape()
不适合替换字符串:
>>> re.sub('a', re.escape('_'), 'aa')
'\\_\\_'
一种解决方案是将替换项放在lambda中:
>>> re.sub('a', lambda _: '_', 'aa')
'__'
因为lambda的返回值被视为re.sub()
文字字符串。
repl
参数不是简单的字符串,而是经过解析的。例如,re.sub(r'(.)', r'\1', 'X')
将返回X
,而不是\1
。
repl
参数的相关问题:stackoverflow.com/q/49943270/247696
repl
对参数re.sub
是一个字符串,而不是一个正则表达式; 首先申请re.escape
它没有任何意义。