正则表达式在java中的运用及示例

转义字符

在使用正则表达式时,有时需要用到转义字符进行转义。

想要匹配某些具体的特殊符号,比如+[.?^{|\,需要在前面加上一个转义字符\ 。比如通过 \. 去匹配.号。

最常见的就是\\

限定符(量词):

*表示零次或多次,+表示至少一次,?表示最多一次。{n}表示n次,{n,}表示至少n次。

元字符:

由于元字符一般会放在字符串中,所以需要转义,也就是\会变成 \\ 。

  • .

.可以匹配除换行符之外的任何单字符。比如.*表示任意个非换行符\n的字符。

而.*d+.*则表示以任意非\n开始,中间包含至少一个d字符,并且以任意非\n字符结束。

String str="abcdddabc";
String regex=".*d+.*";
if (str.matches(regex)){
    System.out.println(true);
}

此处的matches()相当于:

Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
if(m.matches()){
    //...
}
  • ^和$

^匹配字符串的开始位置。而$匹配字符串的结尾位置。

^cat : 验证该行以c开头紧接着是a,然后是t。
cat$ : 验证该行以t结尾倒数第二个字符为a倒数第三个字符为c。
^cat$ : 以c开头接着是a->t然后是行结束:只有cat三个字母的数据行。
如下所示:

String str="catdog";
//regex只能匹配cat
String regex="^cat$";
//regex2可以匹配cat开头的字符串
String regex2="^cat.*";
//regex3可以匹配dog结尾的字符串
String regex3=".*dog$";
boolean isMatch1=str.matches(regex);
boolean isMatch2=str.matches(regex2);
boolean isMatch3=str.matches(regex3);
System.out.println(isMatch1+","+isMatch2+","+isMatch3);
  • \d

\d表示一个整数,\d{4}表示4个整数,\d+表示任意个整数。\D+表示任意个非整数

\d{4}-\d{2}-\d{2}表示年月日,比如2016-05-05 。

"\\d{4}-\\d{2}-\\d{2}"
  • \s

\s表示一个空白字符(如空格、制表符、换页符等等),\s+表示任意多的空白字符。

"\\s"
  • \S

\S表示任何一个非空白字符。\S+表示任意多的非空白字符。

"\\S"
  • \p

\p{Upper}{2}表示2个大写字母。\p{Lower}{3}表示3个小写字母。

"\\p{Upper}{2}\\p{Lower}{3}\\d{4}"
  • \w
    \w 匹配字母或数字或下划线或汉字
  • \W
    \W 不匹配字母或数字或下划线或汉字

中括号表达式:

[]表示:"或". 如:[afg]表示一个为a或者f或者g的字母。

中括号内的-表示范围。[1-9]表示数字1到9中的一个,[1-9]+表示至少一个数字。

[A-Za-z]表示一个任意字母。[A-Za-z]+表示任意多个字母。

中括号内的^表示非。[^xyz]表示任意不包含xyz的字符。比如123,abc之类的。

String str="abdf1459";
//匹配4个小写字母,接着是4个数字
String regex="[a-z]{4}[1-9]{4}";
if (str.matches(regex)) {
    System.out.println(true);
}

参考资料:

https://www.runoob.com/regexp/regexp-syntax.html
https://www.cnblogs.com/zery/p/3438845.html

你可能感兴趣的:(正则表达式在java中的运用及示例)