当我从文字正则表达式构建模式时以及从文件中读取正则表达式时,为什么我没有得到相同的行为?
String regex = "(?xi)(title)[\\.:;](.*) \043 Title property";
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern);
// will print:
(?xi)(title)[。:;](。*)#Title property
当我尝试从遇到问题的文件中读取正则表达式时,此表达式仍然有效。 '\ 043'未替换为其正确的形式。为什么这样?
我试图避免使用文字'#'字符符号,从而使用和代替它,因为我的代码中存在其他冲突。
答案 0 :(得分:0)
\043
......都过去了。
Java编译器将\043
转换为一个字符(“#”)。
如果您阅读的文件包含:
assertEquals("\\043", stringFromFile);
...进入一个字符串,然后:
\
...将通过。如果您想在字符串中使用文字\
,则需要使用其他{{1}}转义它。