A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁志冰 中级黑马   /  2012-9-24 23:41  /  1744 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 梁志冰 于 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);
}
}

请问一下:在使用正则表达式的时候,为什么"." ,需要用\\来进行标记呢?

6 个回复

倒序浏览
在Java里面反斜线字符 ('\') 用于引用转义构造,所以“\”要用"\\"来表示

而"."在正则表达式中表示为任意字符,所以必须用"\\."进行转义

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
\是转义字符,所以必须加  用在字符串的时候,就再加一个 就像目录一样

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为"."在正则表达匹配的是所所有字符,所以需要用"."需要进行转义,那么在正则表达式中单独表示点就是这样"\."的,但正则表达式中的点"\."放到字符串中就需要用"\"将"\."的斜杠"\"进行转义,因为斜杠"\"在字符串中也有特殊的意义,所以定义字符串的正则表达式的时候需要"\\."

其实可以对比JScript,同样的那里面的正则表达式new建立正则表达式的对象,那里面就可以"\."表示了,没有用字符串表示。"."匹配的是除"\n"之外的所有字符。

我是这么理解的

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
佘天宇 发表于 2012-9-25 01:59
因为"."在正则表达匹配的是所所有字符,所以需要用"."需要进行转义,那么在正则表达式中单独表示点就是这样 ...

谢谢你的解答,问题已解决
回复 使用道具 举报
呵呵,不客气
回复 使用道具 举报
柳彬 中级黑马 2012-9-25 12:07:03
7#
这个很简单哦,在正则表达式里,反斜线字符 ('\') 用于引用转义构造,如上表所定义的,同时还用于引用其他将被解释为非转义构造的字符。因此,表达式 \\ 与单个反斜线匹配,而 \{ 与左括号匹配。
这里因为。与 正则表达式的。冲突,所以需要转义。如果是单个斜杠就是任何字符的意思不符合定界正则的语法,所以必须用双斜杠,它表示以。为分界来分割字符串。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马