我正在尝试使用以下代码了解 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/