如果有方便的方式来存储带有单个反斜杠的模式,那就太好了。一些解决方法:将其存储在文件中并使用 NIO 读取。缺点:Java EE 不允许 IO 访问。以某种方式存储在 JNDI 中。也许新的 java 5 Pattern.LITERAL
标志可以帮助?我想使用普通模式字符串,例如 \d
,而不是 \\d
。
最佳答案
问题是 \
在创建 String 时是 java 中的一个特殊字符,无论是否使用正则表达式。
例如 String s = "\t";
虽然你不能将它用于任意字符,String s = "\a";
会给你一个编译时错误。有效的字符是 b、t、n、f、r、"、' 和\
因此,要在 Java 中的字符串中获取文字 \
,您需要像这样对其进行转义:\\
。因此,您的唯一选项是不要在 java 文件中包含这些字符串,因此在由您的 java 文件加载的外部文件中。 Pattern.LITERAL
根本没有帮助,因为您仍然需要一个有效的 java 字符串,而 \d
不是。
关于Java 正则表达式模式有双反斜杠,如何以可读格式存储模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2657864/