我想使用来自用户的输入作为搜索某些文本的正则表达式模式.它可以工作,但我如何处理用户将有意义的字符放入正则表达式的情况?
例如,用户想要搜索单词(s)
:regex引擎将把(s)
作为一个组.我想让它把它当作一根细绳"(s)"
.我可以在用户输入上运行replace
,并用\(
替换(
,用\)
替换)
,但问题是我需要替换每个可能的正则表达式符号.
你知道更好的方法吗?
我想使用来自用户的输入作为搜索某些文本的正则表达式模式.它可以工作,但我如何处理用户将有意义的字符放入正则表达式的情况?
例如,用户想要搜索单词(s)
:regex引擎将把(s)
作为一个组.我想让它把它当作一根细绳"(s)"
.我可以在用户输入上运行replace
,并用\(
替换(
,用\)
替换)
,但问题是我需要替换每个可能的正则表达式符号.
你知道更好的方法吗?
使用re.escape()
功能进行以下操作:
escape(string)
返回所有非字母数字反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,这非常有用.
一个简单的示例是,搜索所提供的字符串的任何匹配项(可选地后跟"s"),并返回匹配对象.
def simplistic_plural(word, text):
word_or_plural = re.escape(word) + 's?'
return re.match(word_or_plural, text)