假设我有一个正则表达式,其中使用了一些特殊字符,但也有一部分“普通”文本恰好包含一些符号。假设我太懒了,不想开始转义“普通文本”部分中的每个“可能的”特殊字符。
我怎样才能将“正常”文本位括起来,以便当 Regex 认为它遇到了特殊字符时(实际上并没有)不会开始发脾气?
举个例子,假设我搜索文本:
.*Hello it's true that ([6*.5]^2=9)
。
我当然不想每次数学部分出现任何特殊字符时都费力地使用转义字符(或“不要”中的撇号)。另一方面,我确实想将.*
开头的位视为特殊字符。
那么我可以将该Hello it's true that ([6*.5]^2=9)
部分括起来,以便 Regex 将其视为普通文本而不是特殊文本吗?
我正在使用 Notepad++ 进行查找和替换,但希望无论使用什么程序,答案都是相同的。
答案1
某些工具允许您更改是否默认必须转义特殊字符。例如,vi
(和克隆)有一个magic
控制这一点的模式。这可以让您减少所需的转义量。
答案2
尝试\Q
以文字开头,以结尾\E
。
这适用于多种类型的 Regex,尽管 Java 可能存在问题。