【发布时间】:2014-04-01 13:08:37
【问题描述】:
我正在尝试构建一个 Java 正则表达式来在 .txt 文件中搜索 Windows 格式的文件路径,但是,由于文件路径包含文字反斜杠,我的正则表达式失败了。
.txt 文件包含以下行:
C\Windows\SysWOW64\ntdll.dll
但是,文本文件中的某些文件名的格式如下:
C\Windows\SysWOW64\ntdll.dll (some developer stuff here...)
所以我无法使用 String.equals
为了匹配这一行,我使用了正则表达式:
filename = "C\\Windows\\SysWOW64\\ntdll.dll"
read = BufferedReader.readLine();
if (Pattern.compile(Pattern.quote(filename), Pattern.CASE_INSENSITIVE).matcher(read).find()) {
我尝试使用替换方法转义文字反斜杠,即:
filename.replace("\\", "\\\\");
但是,这没有找到,我猜这是因为我需要在 Pattern 构建后进一步转义反斜杠,我想我可能需要转义最多四个反斜杠,即:
Pattern.replaceAll("\\\\", "\\\\\\\\");
但是,每次我尝试时,模式都不匹配。我确定这是反斜杠的问题,但我不确定在哪里进行替换,或者是否有更好的构建模式的方法。
我认为问题进一步复杂化,因为 replaceAll 方法也使用正则表达式,这意味着该模式将在其中有自己的反斜杠,以处理不区分大小写的问题。
任何意见或建议将不胜感激。
谢谢
【问题讨论】:
-
你的原始字符串会触发编译失败
-
是的,对不起,让我来解决这个问题。