java 正则踩坑

1. String.replaceAll(String regex, String replacement) 方法问题

默认替换会把regex字符串当作一个正则表达式解析,这样的话如果想直接替换就不能出现正则语义。否则会出错
Exception in thread "main" java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 18

// 测试案例
"abc+++cba".replaceAll("+++","sss")
// 解决方案
"abc+++cba".replaceAll("\\+\\+\\+","sss");
org.apache.commons.lang3.StringUtils.replace("abc+++cba","+++","sss");

java.util.regex.Matcher#find() 与 java.util.regex.Matcher#matches() 比较

  1. matches 方法是字符完全满足正则;
  2. find 方法是字符串存在一个或多个字串满足正则,调用了find后会移动定位,假设只有一个字串满足的话,再此调用会放回 false,所以又是需要同 java.util.regex.Matcher#reset() 组合使用;
Pattern pattern = Pattern.compile("正则字符串");
Matcher matcher = pattern.matcher("待匹配字符串");
System.out.println(matcher.matches());
if (matcher.find()) {
matcher.reset();
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}else{
System.out.println("正则没匹配上啊");
}
posted @   临渊不羡渔  阅读(105)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示