Pattern.quote方法的用途是什么?

我正在尝试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这里?文档说明中说:

返回String指定的文字模式String

此方法产生一个String,可用来创建一个Pattern与字符串相匹配的,就s好像它是文字模式一样。

输入序列中的元字符或转义序列将没有特殊含义。

但是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:

返回指定字符串的文字模式字符串。

此方法产生一个String,该字符串可用于创建与字符串s相匹配的Pattern,就好像它是文字模式一样。

输入序列中的元字符或转义序列将没有特殊含义。

以上是 Pattern.quote方法的用途是什么? 的全部内容, 来源链接: utcz.com/qa/428536.html

回到顶部