正则表达式
正则表达式是一个字符串,用来描述匹配一个字符串集合的模式。对于字符串的处理,正则表达式是一个强大的工具。可以使用正则表达式来匹配、替换、拆分字符串。
正则表达式的语法
正则表达式由字面值字符和特殊符号组成。
注意:反斜杠是一个特殊的字符,在字符串中开始专一序列。因此Java中需要使用\\来表示\;
\s等同[\t\n\r\f];\S等同[^\t\n\r\f]; 不要在重复量词符中使用空白
示例:
"111-22-3333".matches("[\\d]{3}·[\\d]{2}-[\\d]{4}") returns true.
"11-22-3333".matches("[\\d]{3)}[\\d]{2}-[\\d]{4}") returns false.
"123".matches("[\\d]*[02468]") returns false.
"122".matches("[\\d]*[02468]") returns true.
替换和拆分字符串
如果字符串匹配正则表达式,String类的matches方法返回true。String类也包含repalceAll、replaceFirst和split方法,用于替换和拆分字符串。
replaceAll方法替换所有匹配的子字符串,replaceFirst方法替换第一个匹配的子字符串。
示例:
replaceAll:
System.out.print1n("Java Java Java".replaceA11("v\\w"."wi")) ;
显示
Jawi Jawi Jawi
replaceFirst:
System.out.print1n("Java Java Java".replaceFirst("v\\w"."wi"));
显示
Jawi Java Java
注意:默认情况下,所有的量词符都是“贪婪”的。这以为这它们会尽可能匹配最多次。
比如,下面的语句显示JRvaa。因为第一匹配成功的是aaa。
System.out.println("Jaaavaa".replaceFirst("a+","R"));
可以通过在后面添加问号(?)来改变量词符的默认行为。量词符变为“不情愿”或“惰性”的,这意味着它将匹配尽可能少的次数。
System.out.println("Jaaavaa".replaceFirst("a+?',"R"));