Java正则表达式Pattern.quote()方法详解 作者:马育民 • 2025-11-04 17:35 • 阅读:10000 # 提出问题 通过正则表达式,提取下面字符串中,包含 `美元+数字` 的字符串,如下: ``` $100, $130, $150 ``` 提取的正则表达式: ``` $\d\d\d ``` 完整代码如下: ``` String text = "$100, $130, $150"; String patternStr = "$100"; Matcher matcher = Pattern.compile(patternStr).matcher(text); while (matcher.find()) { System.out.println(matcher.group()); } ``` 执行结果找不到字符串 ### 分析问题 因为 `$` 是正则表达式的符号之一,表示 **匹配字符串的结束**,详见[链接](https://www.malaoshi.top/show_1IX2yvsAZgmZ.html "链接") # 解决方法一 使用转移符号 `\$`,完整正则表达式:`\\$\\d\\d\\d`,完整代码如下: ``` String text = "$100, $130, $150"; String patternStr = "\\$\\d\\d\\d"; Matcher matcher = Pattern.compile(patternStr).matcher(text); while (matcher.find()) { System.out.println(matcher.group()); } ``` 执行结果: ``` $100 $130 $150 ``` ### 缺点 需要手动转移,复杂正则表达式容易出错 ### 解决 使用 `Pattern.quote()` 方法 # Pattern.quote() 先看下面代码 ``` String text = "$100, $130, $150"; String patternStr = Pattern.quote("$") + "\\d\\d\\d"; System.out.println("正则表达式:"+patternStr); Matcher matcher = Pattern.compile(patternStr).matcher(text); while (matcher.find()) { System.out.println(matcher.group()); } ``` 执行结果: ``` 正则表达式:\Q$\E\d\d\d $100 $130 $150 ``` ### 解释 `Pattern.quote("$")` 就是在字符串 `$` 的前面加上 `\Q`,后面加上 `\E`,表示此 `$` 是普通字符串,不是正则表达式 ### `\Q`、`\E` 解释 - `\Q`:代表字面内容的开始 - `\E`:代表字面内容的结束 参考:https://www.baeldung-cn.com/java-pattern-quote 原文出处:http://malaoshi.top/show_1GW2AOgegRv5.html