我想使用来自用户的输入作为搜索某些文本的正则表达式模式.它可以工作,但我如何处理用户将有意义的字符放入正则表达式的情况?

例如,用户想要搜索单词(s):regex引擎将把(s)作为一个组.我想让它把它当作一根细绳"(s)" .我可以在用户输入上运行replace,并用\(替换(,用\)替换),但问题是我需要替换每个可能的正则表达式符号.

你知道更好的方法吗?

推荐答案

使用re.escape()功能进行以下操作:

4.2.3 re Module Contents

escape(string)

返回所有非字母数字反斜杠的字符串;如果要匹配可能包含正则表达式元字符的任意文字字符串,这非常有用.

一个简单的示例是,搜索所提供的字符串的任何匹配项(可选地后跟"s"),并返回匹配对象.

def simplistic_plural(word, text):
    word_or_plural = re.escape(word) + 's?'
    return re.match(word_or_plural, text)

Python相关问答推荐

使用Python从HTTP打印值

在Python中添加期货之间的延迟

保留包含pandas pandras中文本的列

使用Python C API重新启动Python解释器

如何在vercel中指定Python运行时版本?

从 struct 类型创建MultiPolygon对象,并使用Polars列出[list[f64]列

pyramid 内部数组中的连续序列-两极

PyQt5如何将pyuic 5生成的Python类添加到QStackedWidget中?

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

Python主进程和分支进程如何共享gc信息?

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

需要计算60,000个坐标之间的距离

如何根据参数推断对象的返回类型?

如何从具有不同len的列表字典中创建摘要表?

numpy卷积与有效

Django REST Framework:无法正确地将值注释到多对多模型,不断得到错误字段名称字段对模型无效'<><>

从嵌套的yaml创建一个嵌套字符串,后面跟着点

Polars将相同的自定义函数应用于组中的多个列,

在代码执行后关闭ChromeDriver窗口

为什么'if x is None:pass'比'x is None'单独使用更快?