java正则表达式学习心得

阅读更多

前段时间做些小东西的时候遇到字符串提取处理,感觉写起来非常费力,于是再次温习了正则表达式内容,在原来模糊的基础上学习了许多:

基础的比如:

 

\ 的作用匹配字符,如需要匹配反斜线则为:("\\".matches("\\\\"),注意因为程序把反斜线作为转义字符需要再次转义为反斜线。

 

[] 的作用是匹配每个特定范围的单个字符,其中&&表示交集^表示非该范围字符

如:"y".matches("[a-z&&[^stz]]"    //表示在a-z并除去stz的范围。

       【a-q【q-z】】表示是a-q或q-z范围。

 

 

预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W

非单词字符:[^\w]

 

 

 

 

 

 

{ m,n} 作用是限定前面内容的次数范围

如:"211525".matches("\\d{3,10}") //表示匹配数字个数在3到10的字符串。

 

? *  + 的作用是限定次数,?表示一次或一次也没有,*表零次或多次,+一次或多次。

 

Greedy 数量词

默认模式,先吞掉最多个数字符,然后判断匹配,然后再依次吐出一个字符来匹配,直到没有。

 

 

Reluctant (不情愿的)数量词?

再改模式下,先吞掉最少限制数量字符个数的字符,然后判断匹配,然后再依次吞一个字符,直到匹配成功或都匹配不到。

 

Possessive 数量词+

独占式,吞了不往外吐,也不查找子串的匹配是否。

 

大家需要根据需求自由选择不同模式。

  • java正则表达式学习心得_第1张图片
  • 大小: 123 KB
  • 查看图片附件

你可能感兴趣的:(java,regular,expression)