Java处理正则表达式特殊字符转义
2016-12-09 15:13
344 查看
正则需要转义字符:'$', '(',
')', '*', '+', '.', '[', ']', '?', '\\',
'^', '{', '}', '|'
异常现象: java.util.regex.PatternSyntaxException: Dangling meta.
character '*' near index 0
解决方法: 对特殊字符加\\转义即可。
注意:虽然使用[]在部分条件下也可以,但是在对于(、[、{范围边界开始符不匹配的情况下会报如下:
异常现象:java.util.regex.PatternSyntaxException: Illegal repetition near index 50
Java过滤正则表达式特殊字代码如下(注意:\\需要第一个替换,否则replace方法替换时会有逻辑bug)
[java] view
plain copy
print?
/**
* 转义正则特殊字符 ($()*+.[]?\^{},|)
*
* @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;
}
')', '*', '+', '.', '[', ']', '?', '\\',
'^', '{', '}', '|'
异常现象: java.util.regex.PatternSyntaxException: Dangling meta.
character '*' near index 0
解决方法: 对特殊字符加\\转义即可。
注意:虽然使用[]在部分条件下也可以,但是在对于(、[、{范围边界开始符不匹配的情况下会报如下:
异常现象:java.util.regex.PatternSyntaxException: Illegal repetition near index 50
Java过滤正则表达式特殊字代码如下(注意:\\需要第一个替换,否则replace方法替换时会有逻辑bug)
[java] view
plain copy
print?
/**
* 转义正则特殊字符 ($()*+.[]?\^{},|)
*
* @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;
}
相关文章推荐
- Java正则表达式处理特殊字符转义的方法
- Java处理正则表达式特殊字符转义
- regex 正则表达式 需要转义的特殊字符 以及 java、python实现
- Java处理特殊字符替换(正则表达式)
- Java正则表达式 特殊字符转义
- java正则表达式特殊字符转义
- java 正则表达式,特殊字符转义
- Java正则表达式特殊字符及其处理以及正则表达式详解
- 正则表达式中问号等特殊字符的转义
- 正则表达式中特殊字符的转义
- java 的转义字符,在正则表达式中应用
- java 的转义字符,在正则表达式中应用
- Java过滤特殊字符的正则表达式----转载
- Java过滤特殊字符的正则表达式
- Java过滤特殊字符的正则表达式
- 正则表达式-特殊字符需要转义
- 在字符串处理中正则表达式中特殊字符处理
- java正则表达式 过滤特殊字符的正则表达式
- java正则表达式 过滤特殊字符的正则表达式
- 正则表达式特殊字符转义