正则表达式

杨 11:03:52
正则:([\w.]+)\b[.]([a-zA-Z]+)\z
字符:zhuyu.doc.xls.xml.ppt
杨 11:04:29
两个捕获,第一个是文件名,第二个就是扩展名。
这样匹配能保证捕获最后一个点
zhuyu 11:07:41
()你不是给我说过这是捕获?
博超_宋杨 11:07:47
对啊
博超_宋杨 11:07:56
你不就是要捕获文件名么
zhuyu 11:08:08
[]这个是用来匹配的吗?
zhuyu 11:08:20
是的,请教你下语法,我忘了
博超_宋杨 11:08:18
【】是字符选集
zhuyu 11:09:05
([\w.]+)\b[.]([a-zA-Z]+)\z

\w ,\b,\z是干什么用的啊

博超_宋杨 11:09:56
文件名可以包含很多很多点,但是只有最后一个点才是扩展名,如果用 String.lastIndexOf('.') 实现很容易。

正则就要匹配字符串边界条件,\b 是单词边界的意思,\z 是输入末尾
博超_宋杨 11:10:26
等价于:([a-zA-Z0-9.]+)\b[.]([a-zA-Z]+)\z
zhuyu 11:10:37
是的,你的正则表达式是对的,我是想请教下正则表达式的知识
博超_宋杨 11:10:56
\w == [a-zA-Z0-9]
[\w.] == [a-zA-Z0-9.]
zhuyu 11:11:12
([a-zA-Z0-9.]+)\b[.]?
zhuyu 11:11:15
这个是?
博超_宋杨 11:12:07
\b 是代表单词边界,文件名可以看成是一个单词,

\b[.] 代表这个单词末尾结束标志是一个点
zhuyu 11:13:29
([a-zA-Z]+)\z?

博超_宋杨 11:15:39
这个要结合起来看

([\w.]+)\b [.] ([a-zA-Z]+)\z
前面一部分是匹配一个单词,\b代表一个单词结束
中间部分是一个普通的点匹配,说明两部分连接用一个点
后面一部分是扩展名捕获,因为文件名只有最后一部分才是扩展名,所以用 \z 代表输入的结束。
博超_宋杨 11:17:04
比如: zhuyu.doc.xls.xml.ppt
就要想象他有三部分组成 zhuyu.doc.xls.xml . ppt
zhuyu 11:17:25
哦,你早说这句,记好了
zhuyu 11:17:28
就好了
zhuyu 11:17:51
1、 zhuyu.doc.xls.xml
2、 .
3、 ppt

博超_宋杨 11:18:32

zhuyu 11:18:49
1、 zhuyu.doc.xls.xml 对应 ([\w.]+)\b
2、 . 对应 [.]
3、 ppt 对应 ([a-zA-Z]+)\z
是吗?
博超_宋杨 11:18:58
我就说,其实正则语法很少,关键要靠怎么去拆字符串
zhuyu 11:19:22
我也是这么想的,不过写不出来

 博超_宋杨  11:20:36
但是点本身就是单词分界,所以要用 \w. 去匹配
博超_宋杨  11:21:08
然后加 \b 强制作为一个单词
博超_宋杨  11:21:42
主要就是拆,语法就那么几个,我也是每次都会查一下语法 
posted @ 2013-10-22 11:21  朱煜  阅读(148)  评论(0)    收藏  举报