页面

2009年3月9日

正则表达式匹配范围

“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
  • 句点符号 .

假如你现在想写一个3个字符的单词必须是以z开头n结尾。那么你可以写z.c那么他匹配"zyc","z*c"还包括空格

  1. 正则表达式z.c   
  2. 匹配:zyc,z*c,z c,z&c等  
  • 方括号[ ]

假如正则表达式z[asdy]c,那么他只匹配zac,zsc,zdc,zyc,因为方括号内只能匹配单个的字符

  1. 正则表达式z[asdy]c   
  2. 匹配:zac,zsc,zdc,zyc  
  • "或"符号 |

假如你现在想匹配zac,zsc,zyyc那么你的正则表达式应该这样写z(a|s|yy)c,因为方号只能匹配单个字符,这里只能用园括号

java 代码
  1. 正则表达式:z(a|s|yy)c   
  2. 匹配:zac.zsc.zyyc  
  •  表示匹配次数的符号

表示匹配次数的符号
符号 次数
* 0次或者多次
+ 1次或者多次
0次或者1次
{n} n次
{n,m} n到m此

那么看下列例子:

[0-9]{3}\-[0-9]{2}\-[0-9]{4}

上面的这个正则表达式的意思前3位必须是0-9的数字然后是“-”做连接符号,0-9的数字出现2次然后是“-”在然后就是0-9的数字出现4次那么他匹配的是123-12-1234

[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}

上面的这个表达式在第一个表达式的基础上改进的,就不做过多的解释,\-?的意思是"-"连接符可以出现0-1次那么他匹配123-12-1234,也匹配123121234

[0-9]{4}[a-zA-Z]{2}

在看上述表达式是前4位必须是0-9的数字,后2位必须是a-z的字母或者是A-Z的字母,那么它匹配1234aa,也匹配1234AA

  • "否"字符 ^:表示不想匹配的字符[^z]表示非z的字符
  •   常用的符号
  • 符号 等价的正则表达式
    \d [0-9]
    \D [^0-9]
    \w [0-9A-Z]
    \W [^0-9A-Z]
    \s [\t\n\r\f]
    \S [^\t\n\r\f]
  • Java代码
    1. ^\d+$ //匹配非负整数(正整数 + 0)    
    2. ^[0-9]*[1-9][0-9]*$ //匹配正整数    
  • ^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0)    
  • ^-[0-9]*[1-9][0-9]*$ //匹配负整数    
  • ^-?\d+$ //匹配整数    
  • ^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0)    
  • ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数    
  • ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数 + 0)    
  • ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9
  • 没有评论: