❶ java正则 /\t/ new RegExp("\\t") 为什么要双转义
因为java的正则表达式在是字符串里的,\是java字符串中的转义符。\也是正则表达式中的转义符。那么只加一个\的话,只能说明在字符串中转义符,而java需要进一步把普通字符串中的\变成正则表达式中的\,像是更深一则转化的意思,这样\\以后的意思是正则表达式中的转义符(\)。
要把\把变成正则表达式中的\,所以\\是转义了一个\
我的回答简而言之,在java中(别的语言有别的规矩),正则表达式字符串,和普通字串是两个东西。
❷ 请教java正则表达式的转义字符问题
1 /**
2 * 转义正则特殊字符 ($()*+.[]?\^{}
3 * \\需要第一个替换,否则replace方法替换时会有逻辑bug
4 */
5 public static String makeQueryStringAllRegExp(String str) {
6 if(StringUtils.isBlank(str)){
7 return str;
8 }
9
10 return str.replace("\\", "\\\\").replace("*", "\\*")
11 .replace("+", "\\+").replace("|", "\\|")
12 .replace("{", "\\{").replace("}", "\\}")
13 .replace("(", "\\(").replace(")", "\\)")
14 .replace("^", "\\^").replace("$", "\\$")
15 .replace("[", "\\[").replace("]", "\\]")
16 .replace("?", "\\?").replace(",", "\\,")
17 .replace(".", "\\.").replace("&", "\\&");
❸ JAVA中正则双斜线和单斜线转义的问题
在java里面反斜杆是转义的意思,在正则表达式里面反斜杆也是转义的意思。java里面2个反斜杆,实际输出的是一个反斜杆。你那个正则表达式实际的验证规则是 \[(.*)\] ".*"。由于[]中括号是正则表达式里面的关键字,所以要转义。所以你最终匹配的样式是[(.*)] ".*"这个样子的。
❹ JAVA中的正则表达式“\\[([^\\]]+)\\]”这个表示什么意思两个转义字符是为了表达什么
在正则中括号表示字符集,要表示中括号字符必须转义
整个正则匹配 中括号中的内容
开头的\\[ 匹配" [ "字符
尾部的\\]匹配 “]"字符
中间的[([^\\]]+),表示所有非"]"字符组成的字符串