当前位置:编程学习 > JAVA >>

正则表达式

[\\da-zA-z]+?
上面的正式表达式是什么意思?懂的话请告诉我一下。谢谢。 正则表达式 --------------------编程问答-------------------- 数字和大小写字母组成的Reluctant匹配
具体参见java中Pattern类的文档 --------------------编程问答-------------------- 楼上正解,[]表示在其中的任意一种进行匹配,其中\d表示0-9数字,但是由于会引起歧义需要转义\也就成了2个\,第一个\表示转义符,第二个表示\d中的\。
然后a-z表示a到z全部的小写字母
A-Z表示A-Z全部的大写字母
而[]方括号表示只能匹配1个字符,或者说只有1个字符能与[]里面的进行匹配
+号表示出现1次或者出现多次
?号表示出现0次或者1次
同时使用表示出现任意次数,[]匹配1个字符,然后使用+与?号匹配所有字符包括0次,其实可以用*替代

详情参考:http://hi.baidu.com/ar50594725/item/d1e61ac3a0d957b30d0a7b95 --------------------编程问答--------------------
引用 2 楼 ztc86472238 的回复:
楼上正解,[]表示在其中的任意一种进行匹配,其中\d表示0-9数字,但是由于会引起歧义需要转义\也就成了2个\,第一个\表示转义符,第二个表示\d中的\。
然后a-z表示a到z全部的小写字母
A-Z表示A-Z全部的大写字母
而[]方括号表示只能匹配1个字符,或者说只有1个字符能与[]里面的进行匹配
+号表示出现1次或者出现多次
?号表示出现0次或者1次
同时使用表示出现任意次数,[]匹配1个字符,然后使用+与?号匹配所有字符包括0次,其实可以用*替代

详情参考:http://hi.baidu.com/ar50594725/item/d1e61ac3a0d957b30d0a7b95

不好意思说的还有点问题,后面的问号除了表示出现次数,还有另一种用法,懒惰模式
正则表达式有贪婪性与懒惰性,贪婪性也就是想尽可能多的从左向右进行匹配,比如a*,去匹配aaaaaaab,结果是aaaaaaa,如果你想阻止这种情况就需要使用懒惰性了,即在其后加上?号,a*?表示匹配到就停止这是用a*?匹配aaaaaaab则第一次的匹配结果为a,第二次再匹配结果再为a如此循环直至到b为止。你提问的应该是用了懒惰模式,不是我说的全匹配 --------------------编程问答-------------------- 数字和字母组成的字符串。并且至少有一个字符。 --------------------编程问答-------------------- 学习,谢谢! --------------------编程问答--------------------
引用 4 楼 rainbowsix 的回复:
数字和字母组成的字符串。并且至少有一个字符。
+1 --------------------编程问答--------------------
引用 楼主 wzw19910109 的回复:
[\\da-zA-z]+?
上面的正式表达式是什么意思?懂的话请告诉我一下。谢谢。

说的深入一点的话,你的先了解一下正则的一些基本的理论。
其实就是匹配出“\” 26个字母,包括大写小写
后面“+?”就是懒惰匹配,实际的效果就是匹配的单个
的26个字母(大小写)包括“\”


--------------------编程问答--------------------
引用 6 楼 oh_Maxy 的回复:
Quote: 引用 4 楼 rainbowsix 的回复:

数字和字母组成的字符串。并且至少有一个字符。
+1

数字和字母组成的字符串?
怕是有些武断了吧?
[\\da-zA-z]+?
整个正则匹配的是“\”或者"d"、或者单个26个字母(小写)、或者单个26个字母(大写)
“d”包含在26个小写字母中就造成了,我上面说的情况
实际的效果就是匹配的单个的26个字母(大小写)包括“\”


--------------------编程问答-------------------- 匹配数字大小写字母组成的字符串,懒惰式,实际效果匹配只有一个字符
理解推测,未验证。 --------------------编程问答--------------------
引用 8 楼 kiritor 的回复:
Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 4 楼 rainbowsix 的回复:

数字和字母组成的字符串。并且至少有一个字符。
+1

数字和字母组成的字符串?
怕是有些武断了吧?
[\\da-zA-z]+?
整个正则匹配的是“\”或者"d"、或者单个26个字母(小写)、或者单个26个字母(大写)
“d”包含在26个小写字母中就造成了,我上面说的情况
实际的效果就是匹配的单个的26个字母(大小写)包括“\”



\\是转义\字符。我们使用正则式字符串的时候,如果"\d"是无法匹配数字的。至于+?,感觉效果和+一样。希望兄台给出几个样例code看看那? --------------------编程问答-------------------- \\d:任意数字
a-z:小写的a到z
A-Z:大写的A到Z
+?:出现一次或多次 --------------------编程问答-------------------- 好吧,口说无凭
--------------------编程问答--------------------
引用 12 楼 kiritor 的回复:
好吧,口说无凭

--------------------编程问答-------------------- 建议看源码!
--------------------编程问答--------------------
引用 8 楼 kiritor 的回复:
Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 4 楼 rainbowsix 的回复:

数字和字母组成的字符串。并且至少有一个字符。
+1

数字和字母组成的字符串?
怕是有些武断了吧?
[\\da-zA-z]+?
整个正则匹配的是“\”或者"d"、或者单个26个字母(小写)、或者单个26个字母(大写)
“d”包含在26个小写字母中就造成了,我上面说的情况
实际的效果就是匹配的单个的26个字母(大小写)包括“\”




确实不够精确,应该说java的环境下如此。 --------------------编程问答--------------------
引用 8 楼 kiritor 的回复:
Quote: 引用 6 楼 oh_Maxy 的回复:

Quote: 引用 4 楼 rainbowsix 的回复:

数字和字母组成的字符串。并且至少有一个字符。
+1

数字和字母组成的字符串?
怕是有些武断了吧?
[\\da-zA-z]+?
整个正则匹配的是“\”或者"d"、或者单个26个字母(小写)、或者单个26个字母(大写)
“d”包含在26个小写字母中就造成了,我上面说的情况
实际的效果就是匹配的单个的26个字母(大小写)包括“\”



说的没错,其它人不懂正则的别误人子弟 --------------------编程问答-------------------- 学习,谢谢! --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,