文本化模式字符串
每当您需要对任意值进行字面化以用作正则表达式模式时,请使用 Pattern.quote
:String
从 API:
public static String quote(String s)
返回指定 的文本模式。此方法生成一个,该方法可用于创建与字符串匹配的字符串,就好像它是文本模式一样。输入序列中的元字符或转义序列将不具有特殊含义。String
String
String
Pattern
s
参数:- 要文本化的
字符串 返回:文本字符串替换s
这意味着您可以执行以下操作:
String[] subDirs = path.split(Pattern.quote(File.separator));
文本化替换字符串
如果需要对任意替换进行字面化,请使用 Matcher.quoteReplacement
。String
从 API:
public static String quoteReplacement(String s)
返回指定 的文本替换。此方法生成一个,它将在类的方法中用作文本替换。生成的将与被视为文本序列的字符序列匹配。斜杠 () 和美元符号 () 将没有特殊含义。String
String
String
s
appendReplacement
Matcher
String
s
'\'
'$'
参数:- 要文本化的
字符串 返回:文本字符串替换s
这个引用的替换在 以下方面也很有用:String
String.replaceFirst
String.replaceAll
请注意,替换字符串中的反斜杠 () 和美元符号 () 可能会导致结果与将其视为文字替换字符串时的结果不同。如果需要,用于禁止显示这些字符的特殊含义。\
$
Matcher.quoteReplacement
例子
System.out.println(
"O.M.G.".replaceAll(".", "!")
); // prints "!!!!!!"
System.out.println(
"O.M.G.".replaceAll(Pattern.quote("."), "!")
); // prints "O!M!G!"
System.out.println(
"Microsoft software".replaceAll("so", "$0")
); // prints "Microsoft software"
System.out.println(
"Microsoft software".replaceAll("so", Matcher.quoteReplacement("$0"))
); // prints "Micro$0ft $0ftware"