python - 正则表达式中的逐字上下文

标签 python regex escaping

问题:

有没有办法告诉正则表达式引擎将正则表达式的特定部分逐字对待(即完全按原样查找该部分,无需通常的解析)而无需手动转义特殊字符?

一些背景:

我正在尝试从另一个正则表达式反向引用给定正则表达式上的组。例如,假设我想要将 hello(.*?)olleh 与文本 1 进行匹配,然后在文本 2 中查找 bye$1eyb,其中 $1 code> 将被替换为文本 1 中匹配的组 1。因此,如果文本 1 碰巧包含字符串 "helloFOOolleh",程序将查找 "byeFOOeyb"在文本 2 中。

上面的代码在大多数情况下都可以正常工作,但如果文本 1 包含类似 "hello.olleh" 的内容,程序将不仅匹配 "hello.olleh" > 以及文本 2 中的 "helloXolleh""hellouolleh" 等,因为它将 . 解释为正则表达式特殊字符而不是纯点字符。

其他评论:

我不能只搜索将 $1 解析为组 1 匹配的纯字符串,因为我想在文本 2 中搜索的内容本身可能包含其他不相关的正则表达式。

我一直试图避免解析从文本 1 返回的匹配项并转义每个特殊字符,但如果有人知道一种巧妙地做到这一点的方法,那也可以工作。

我目前正在使用 Python 进行此工作,但如果可以使用任何其他语言/程序轻松完成,我很乐意尝试一下。

最佳答案

您可以使用re.escape函数来转义要按字面匹配的文本。因此,在提取匹配文本(例如“hello.olleh”中的“.”)后,请先对其应用 re.escape,然后再将其插入到第二个正则表达式中。

关于python - 正则表达式中的逐字上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26025119/

相关文章:

python - 将 Polars 列表与 Python 列表进行比较

java - 如何将C风格的二进制 float 组读入Java?

python - 月份乘以天数怎么算

javascript - 使用javascript满足条件的电话号码验证

javascript - 正则表达式 : How to find only one match (or not match pattern)

regex - 如何使用正则表达式+替换将CSS样式的javascript字符串中的rgb值更改为十六进制值

Python 2.7 类属性奇怪的行为

url - 逃脱 | Wiki 标记模板中 URL 中的(垂直条/管道)

css - 如何在 CSS 生成的内容中嵌入 Unicode Supplementary Private Use 字符?

java - java中的转义*字符