我正在尝试使用以下代码了解 Pattern.quote:

String pattern = Pattern.quote("1252343% 8 567 hdfg gf^$545");
System.out.println("Pattern is : "+pattern);
产生输出:
Pattern is : \Q1252343% 8 567 hdfg gf^$545\E
这里的 \Q\E 是什么?文档说明说:

但是 Pattern.quote 的返回类型是 String 而不是编译后的 Pattern 对象。
为什么需要这种方法,有哪些使用示例?

最佳答案

\Q 表示“文字文本的开始”(即正则表达式“开引号”)\E 表示“文字文本的结尾”(即正则表达式“关闭引号”)
调用 Pattern.quote() 方法将字符串包装在 \Q...\E 中,这会将文本转换为正则表达式文字。例如, Pattern.quote(".*") 将匹配一个点,然后匹配一个星号:

System.out.println("foo".matches(".*")); // true
System.out.println("foo".matches(Pattern.quote(".*"))); // false
System.out.println(".*".matches(Pattern.quote(".*"))); // true
该方法的目的是不要求程序员必须记住特殊术语 \Q\E 并为代码添加一点可读性 - 正则表达式已经很难阅读了。相比:
someString.matches(Pattern.quote(someLiteral));
someString.matches("\\Q" + someLiteral + "\\E"));
引用 javadoc :

关于java - Pattern.quote 方法有什么用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15409296/

10-13 07:16