黑马程序员技术交流社区

标题: 正则表达式\\.的问题 以点来分割 [打印本页]

作者: 75100313    时间: 2013-12-27 15:40
标题: 正则表达式\\.的问题 以点来分割
本帖最后由 75100313 于 2013-12-27 15:43 编辑
  1. public static void function_2() {
  2.                 String str1 = "zhangsan.xiaoqiang.zhaoliu";
  3.                 String[] names2 = str1.split("\\.");// 按照点分割
  4.                 for (String name : names2) {
  5.                         System.out.println(name);
  6.                 }

  7.         }
复制代码
我想问问这个正则表达式 以点来分割  谁能帮我分析分析  如何去理解\\.就是以点来分割?分别说一下 第一个\和第二个\的作用分别怎么去理解 ,他们的组合顺序是怎样的,比如是这样(\)(\.)?




作者: 小骗子    时间: 2013-12-27 16:03
split(String regex)
          根据给定正则表达式的匹配拆分此字符串。

参数是正则表达式,所以就很容易理解。
做了2次转义,
第一次"."本身是特殊字符,需要一次转义
第二次 正则表达式对  regex  本身要进行一次编译,才能转化为它能识别的内容
作者: 75100313    时间: 2013-12-27 16:11
小骗子 发表于 2013-12-27 16:03
split(String regex)
          根据给定正则表达式的匹配拆分此字符串。

我可以这么理解?
本来点就是特殊字符  \. 转义一次 才表示 点
然后再来一个\  是正则表达式 需要的

是这个意思?

作者: 郭振华    时间: 2013-12-27 16:27
本帖最后由 郭振华 于 2013-12-27 16:30 编辑

其实真正的表达示就是
  1. /.
复制代码
。但是虚拟机要对"/"进行特殊处理,所以"//."。个人理解
作者: 其LovE斤    时间: 2013-12-27 18:08
因为 .  是正则中的特殊字符,所以要用转义字符 \ 来标示  .   表示这是一个   .  没有特殊含义。为\.

但是  要注意  \  也是特殊字符,  它也有特殊含义。  所以 就又需要一个  \ 来标示   \. 中的\ 只是一个单纯的\没有特殊含义。
\\.      我的理解是   JVM 看见第一个 \  就说  我知道  后面的是被转义过的 要原样的。将第二个\ 理解没有特殊含义。接着向后走,看见一个 .  。这是有特殊含义的啊。恩,就向前找,发现有个\。
  这个\就成了转义字符。JVM就说。恩  这个 .  是要原样的。
作者: 75100313    时间: 2013-12-27 18:31
其LovE斤 发表于 2013-12-27 18:08
因为 .  是正则中的特殊字符,所以要用转义字符 \ 来标示  .   表示这是一个   .  没有特殊含义。为\.

但 ...

谢谢女女  很生动啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2