本文概览:介绍了正则表达式常用符号含义和java使用正则表达式实例。

1 正则表达式

1、常用符号含义

snip20170109_64

2. 解析上面的符号

(1) 句号点

表示任意一个字符

(2)方括号[]

只能表示一个字符,举例如[abc]表示:a或者b或者c。

(3)或 |

和[]比较,“|”支持字符串。

如正则表达式:t(a|e|oo)n,此时就可以匹配tan、ten、toon。

又如\d{5}-\d{4}|\d{5}这个表达式规则是5位数字,或者用连字号间隔的9位数字。

注意:如果把它改成\d{5}|\d{5}-\d{4}的话,那么就只会匹配5位的邮编(以及9位邮编的前5位)。原因是匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

(4)否

“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。所以这里一定要需要加上[ ]。如下:

(5)常用符号

/w,表示的是[a-z,A-Z,0-9_],即:字母、数字和下划线。

/W,  表示对/w取否。

(6)表示匹配次数的符号

这些符号作用是确定紧靠该符号左边的符号的出现次数,如下图:

snip20170109_71

2 JAVA使用一个实例

1、查找匹配的字符串

通过find和group方法来实现。

(1)举例如下:

执行结果为

luce

lu3e

(2)group作用

通过find()获取到匹配的字符串,如上面的“luce”和”lu3e”。但是有时候我们想要获取上面正则表达式“lu[a-z0-9]e”中”lu”和”e”之间那个匹配的字符,此时就需要分组了,改下正则表达式为“lu([a-z0-9])e”。

2、find()和matches()比较

find()是指包含的某一个字符串;matches表示正则表达式可以匹配整个字符串。如下代码

执行结果为

关于match是完全匹配的解释,如下代码,正则表达式”\\d\\d\\d”表示三个数字,与“123”完全匹配,如果是“1234”,则就不是完全匹配了,因为“1234”是四个数字。

返回结果为 true。

3 java使用的一些总结

1、 grop 和 |

结果为:

count=2

group(0)=,1862345678912345890,

group(1)=null

group(2)=1862345678912345890

(1)此时为什么 count都是2?

如下正则表达式,尽管有一个“|”,但是应该当成一个表达式,因为此时表达式中有2个分组。所以此时groupCount =2。

(2)为什么group(1) = null

因为上面是匹配到了“[^\d](\d{19})[^\d]”,这个规则是第二个分组,所以group(2)是有值的,但是group(1)是没有值的。

(3)为什么没有匹配到”[^\d](\d{16})[^\d]”

如“,1862345678912345890   , 1234567891234888,589” 中红颜色的逗号首先被匹配到了, 所以就不能再被其他规则使用了。我们还可以举个例子来说明如下

返回结果为

count=4

group(0)=,18

count=4

group(0)=,12

count=4

group(0)=,58

此时没有匹配到 1862-34-56 ?

这是因为上”,1862-34-56…”中“,18”首先匹配到“,\d{2}”这个规则,所以’,18’就不能再匹配'(\\d{4})-(\\d{2}-(\\d\\d))’这个规则了。如果把这个逗号去掉即“1862-34….”此时执行结果为

count=4

group(0)=1862-34-56group(1)=null

count=4

group(0)=,12group(1)=12

count=4

group(0)=,58group(1)=58

4 常用正则表达式

1、匹配6-10的数字

注意:要加上开始和结尾符号,否则类似110这样数字也会匹配到10这个数字。

5 参考文献

1、http://www.jb51.net/tools/zhengze.html#charclass

(全文完)

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注