黑马程序员技术交流社区
标题:
关于正则表达式中的“.”的小疑问
[打印本页]
作者:
梁志冰
时间:
2012-9-24 23:41
标题:
关于正则表达式中的“.”的小疑问
本帖最后由 梁志冰 于 2012-9-26 23:20 编辑
public static void main(String[] args) {
String str="lisi.wangwu.zhaoliu";
String reg="\.";
//这里的为什么用\就会报错,要用\\进行标记呢?
String [] strs= str.split(reg);
for (String s : strs){
System.out.println(s);
}
}
请问一下:在使用正则表达式的时候,为什么"." ,需要用\\来进行标记呢?
作者:
宁振庄
时间:
2012-9-25 00:12
在Java里面反斜线字符 ('\') 用于引用转义构造,所以“\”要用"\\"来表示
而"."在正则表达式中表示为任意字符,所以必须用"\\."进行转义
作者:
赵永康
时间:
2012-9-25 00:28
\是转义字符,所以必须加 用在字符串的时候,就再加一个 就像目录一样
作者:
佘天宇
时间:
2012-9-25 01:59
因为"."在正则表达匹配的是所所有字符,所以需要用"."需要进行转义,那么在正则表达式中单独表示点就是这样"\."的,但正则表达式中的点"\."放到字符串中就需要用"\"将"\."的斜杠"\"进行转义,因为斜杠"\"在字符串中也有特殊的意义,所以定义字符串的正则表达式的时候需要"\\."
其实可以对比JScript,同样的那里面的正则表达式new建立正则表达式的对象,那里面就可以"\."表示了,没有用字符串表示。"."匹配的是除"\n"之外的所有字符。
我是这么理解的
作者:
梁志冰
时间:
2012-9-25 08:47
佘天宇 发表于 2012-9-25 01:59
因为"."在正则表达匹配的是所所有字符,所以需要用"."需要进行转义,那么在正则表达式中单独表示点就是这样 ...
谢谢你的解答,问题已解决
作者:
佘天宇
时间:
2012-9-25 11:28
呵呵,不客气
作者:
柳彬
时间:
2012-9-25 12:07
这个很简单哦,在正则表达式里,反斜线字符 ('\') 用于引用转义构造,如上表所定义的,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \\ 与单个反斜线匹配,而 \{ 与左括号匹配。
这里因为。与 正则表达式的。冲突,所以需要转义。如果是单个斜杠就是任何字符的意思不符合定界正则的语法,所以必须用双斜杠,它表示以。为分界来分割字符串。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2