Java 正则表达式模式有双反斜杠,如何以可读格式存储模式

标签 java regex

如果有方便的方式来存储带有单个反斜杠的模式,那就太好了。一些解决方法:将其存储在文件中并使用 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/

相关文章:

java - Java 中的数组、列表和泛型

java - Richfaces 数据表 PDF 导出

java - 为什么我会收到部署错误?

javascript - 我想在node.js中发送消息而无需输入 key

regex - awk 查找最后一个匹配项并打印接下来的 N 行

java - @Autowired 注解在 Spring 中由 BeanPostProcessor 处理吗?

regex - sed 命令仅在 unix 中的最后一行添加文本

regex - 将一个字符串替换为另一个字符串(可能有任何奇怪的字符)

java - 如何匹配正则表达式中的整个标签?

python - 为什么 PLY 对待正则表达式与 Python/re 不同?