Java正则表达式处理特殊字符转义的方法

 更新时间:2017年01月05日 08:46:56   投稿:daisy  
由于正则表达式定了一些特殊字符,而有时候需要对这些特殊字符进行匹配的话就需要进行转义了,下面这篇文章主要给大家介绍了Java正则表达式处理特殊字符转义的方法,需要的朋友可以参考借鉴,下面来一起看看吧。

正则需要转义字符

'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'

异常现象:

java.util.regex.PatternSyntaxException: Dangling meta. character '*' near index 0

解决方法

对特殊字符加\\转义即可。

注意:虽然使用[]在部分条件下也可以,但是在对于(、[、{范围边界开始符不匹配的情况下会报如下:

异常现象

java.util.regex.PatternSyntaxException: Illegal repetition near index 50

Java过滤正则表达式特殊字代码如下(注意:\\需要第一个替换,否则replace方法替换时会有逻辑bug)

/**
 * 转义正则特殊字符 ($()*+.[]?\^{},|)
 * 
 * @param keyword
 * @return
 */
public static String escapeExprSpecialWord(String keyword) {
 if (StringUtils.isNotBlank(keyword)) {
 String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" };
 for (String key : fbsArr) {
 if (keyword.contains(key)) {
 keyword = keyword.replace(key, "\\" + key);
 }
 }
 }
 return keyword;
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

相关文章

  • Spring Boot文件上传原理与实现详解

    Spring Boot文件上传原理与实现详解

    这篇文章主要介绍了Spring Boot 文件上传原理与实现详解,前端文件上传是面向多用户的,多用户之间可能存在上传同一个名称、类型的文件;为了避免文件冲突导致的覆盖问题这些应该在后台进行解决,需要的朋友可以参考下
    2024-01-01
  • Java顺序查找算法详解

    Java顺序查找算法详解

    顺序查找又称线性查找,主要用于在线性表中进行查找。顺序查找通常分为对一般的无序线性表的顺序查找和对按关键字有序的顺序表的顺序查找,下面我们来一探究竟
    2022-08-08
  • MyBatis入门之增删改查+数据库字段和实体字段不一致问题处理方法

    MyBatis入门之增删改查+数据库字段和实体字段不一致问题处理方法

    这篇文章主要介绍了MyBatis入门之增删改查+数据库字段和实体字段不一致问题处理方法,需要的朋友可以参考下
    2017-05-05
  • SpringBoot项目热部署的实现

    SpringBoot项目热部署的实现

    SpringBoot项目热部署是一种让开发人员在修改代码后无需重启应用即可看到更改效果的技术,通过使用SpringBoot的DevTools等工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Java并发之异步的八种实现方式

    Java并发之异步的八种实现方式

    本文主要介绍了Java并发之异步的八种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java编程中的4种代码块详解

    Java编程中的4种代码块详解

    在本篇内容里小编个总结了Java编程中的4种代码块相关的知识点,有兴趣的朋友们可以学习下。
    2021-06-06
  • 详解servlet调用的几种简单方式总结

    详解servlet调用的几种简单方式总结

    这篇文章主要介绍了详解servlet调用的几种简单方式总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Spring Boot深入分析讲解日期时间处理

    Spring Boot深入分析讲解日期时间处理

    项目中使用LocalDateTime系列作为DTO中时间的数据类型,但是SpringMVC收到参数后总报错,为了配置全局时间类型转换,尝试了如下处理方式
    2022-06-06
  • Mybatis使用on duplicate key update的实现操作

    Mybatis使用on duplicate key update的实现操作

    本文主要介绍了Mybatis使用on duplicate key update的实现操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java的SimpleDateFormat线程不安全的几种解决方案

    java的SimpleDateFormat线程不安全的几种解决方案

    但我们知道SimpleDateFormat是线程不安全的,处理时要特别小心,要加锁或者不能定义为static,要在方法内new出对象,再进行格式化,本文就介绍了几种方法,感兴趣的可以了解一下
    2021-08-08

最新评论