为什么java中“\”要用“\\\\”?
3 个解决方案
#1
"_"只是一个字符。
看例子:
string a="_";
若用[a-zA-Z_0-9]匹配,则会返回true;
若用[a-zA-Z0-9]匹配,则会返回false;
[a-zA-Z_0-9]中的“_”,表示在你的字符串中包含“_”就返回true;他和a,b等等一样,是个字符。
java中“\”是转义字符,“\\”输出是“\”,同理“\\\\”则输出“\\”
看例子:
string a="_";
若用[a-zA-Z_0-9]匹配,则会返回true;
若用[a-zA-Z0-9]匹配,则会返回false;
[a-zA-Z_0-9]中的“_”,表示在你的字符串中包含“_”就返回true;他和a,b等等一样,是个字符。
java中“\”是转义字符,“\\”输出是“\”,同理“\\\\”则输出“\\”
#2
“_” 代表下划线,意思就是允许使用下划线而已。
因为“\”在String中为转义字符,所以每次要写"\\",Java才实际知道你要的是“\”;
而倒霉的是,“\”在正则表达式中也是转义字符,所以相当于总共要进行两次转义处理。
也就是代码中的"\\\\" => 运行时实际String中的“\\” => 正则表达式理解的你要表示“\”
因为“\”在String中为转义字符,所以每次要写"\\",Java才实际知道你要的是“\”;
而倒霉的是,“\”在正则表达式中也是转义字符,所以相当于总共要进行两次转义处理。
也就是代码中的"\\\\" => 运行时实际String中的“\\” => 正则表达式理解的你要表示“\”
#3
2楼好幽默。。谢谢了 终于懂了!
#1
"_"只是一个字符。
看例子:
string a="_";
若用[a-zA-Z_0-9]匹配,则会返回true;
若用[a-zA-Z0-9]匹配,则会返回false;
[a-zA-Z_0-9]中的“_”,表示在你的字符串中包含“_”就返回true;他和a,b等等一样,是个字符。
java中“\”是转义字符,“\\”输出是“\”,同理“\\\\”则输出“\\”
看例子:
string a="_";
若用[a-zA-Z_0-9]匹配,则会返回true;
若用[a-zA-Z0-9]匹配,则会返回false;
[a-zA-Z_0-9]中的“_”,表示在你的字符串中包含“_”就返回true;他和a,b等等一样,是个字符。
java中“\”是转义字符,“\\”输出是“\”,同理“\\\\”则输出“\\”
#2
“_” 代表下划线,意思就是允许使用下划线而已。
因为“\”在String中为转义字符,所以每次要写"\\",Java才实际知道你要的是“\”;
而倒霉的是,“\”在正则表达式中也是转义字符,所以相当于总共要进行两次转义处理。
也就是代码中的"\\\\" => 运行时实际String中的“\\” => 正则表达式理解的你要表示“\”
因为“\”在String中为转义字符,所以每次要写"\\",Java才实际知道你要的是“\”;
而倒霉的是,“\”在正则表达式中也是转义字符,所以相当于总共要进行两次转义处理。
也就是代码中的"\\\\" => 运行时实际String中的“\\” => 正则表达式理解的你要表示“\”
#3
2楼好幽默。。谢谢了 终于懂了!