【发布时间】:2014-09-24 19:40:34
【问题描述】:
问题:
有没有办法告诉正则表达式引擎将正则表达式的某个部分视为逐字(即完全按原样查找该部分,无需通常的解析)而无需手动转义特殊字符?
一些上下文:
我正在尝试从另一个正则表达式反向引用给定正则表达式上的组。例如,假设我想将 hello(.*?)olleh 与文本 1 匹配,然后在文本 2 中查找 bye$1eyb,其中 $1 将被文本 1 中匹配的组 1 替换。因此,如果文本 1 恰好包含字符串"helloFOOolleh",程序会在文本2中寻找"byeFOOeyb"。
以上方法在大多数情况下都可以正常工作,但如果文本 1 包含类似 "hello.olleh" 的内容,则程序将不仅匹配 "hello.olleh",还匹配文本 2 中的 "helloXolleh"、"hellouolleh" 等,如它将. 解释为正则表达式特殊字符,而不是普通的点字符。
其他 cmets:
我不能只搜索将 $1 解析为任何组 1 匹配的纯字符串,因为我想在文本 2 中搜索的任何内容本身都可能包含其他不相关的正则表达式。
我一直在尝试避免解析从文本 1 返回的匹配项并转义每个特殊字符,但如果有人知道一种方法可以巧妙地做到这一点,那也可以。
我目前正在使用 Python 进行这项工作,但如果可以使用任何其他语言/程序轻松完成,我很乐意尝试一下。
【问题讨论】:
-
如果您对其他语言持开放态度,您可能想尝试支持内引用的 Perl 或 PHP/PCRE
\Q..\E。