Java正则表达式
正则表达式简述
正则表达式正则表达是Java中比较矛盾的知识点,因为使用起来可以很简单也可以相当地有难度,但是对于字符串操作来说应用得当则事半功倍,字符串查找,搜索,匹配,替换等等。
基本语法
Java 提供了 java.util.regex 包来与正则表达式进行模式匹配。 java.util.regex 包含了3个类
Pattern 类
Matcher 类
PatternSyntaxException
限定符说明
.任意英文字母比如a-z,表示从a到z?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。\反斜杠, 单独的反斜杠做为转义字符,与其他特殊字符一起使用。如果想匹配反斜杠本身,需要转义。两个反斜杠实际匹配一个反斜杠n字符的8进制表示.n 在0至7之间取值\t缩进符.\n换行符 (unicode: ‘\u000A’)\r回车符 (unicode: ‘\u000D’)\d匹配任意数字 [0-9]\D匹配任意非数字 [^0-9]\s匹配任意空白符 (空格, 缩进, 换行,回车)\S匹配任意非空白符\w匹配任意单词\W匹配任意非单词
限定符说明
[a-z]匹配小写a to z范围中任一个字符,又如[abc] 匹配 a, 或 b 或 c[A-Z]匹配大写A to Z范围中任一个字符[a-zA-Z]匹配小写a to z或大写A to Z范围中一个字符[0-9a-z]匹配小写0 to 9或a to z范围中一个字符[^abc]匹配不是a,b,c 的字符,是否定匹配[a-d[m-p]]匹配a到d之间字符或 m到p之间字符,是并集匹配
例子:
import java
.util
.regex
.Matcher
;
import java
.util
.regex
.Pattern
;
public class RegexMatches
{
public static void main( String args
[] ){
String line
= "Welcome To JAVA WORLD QT3000! OK?";
String pattern
= "(.*)(\\d+)(.*)";
Pattern r
= Pattern
.compile(pattern
);
Matcher m
= r
.matcher(line
);
if (m
.find( )) {
System
.out
.println("Found value: " + m
.group(0) );
System
.out
.println("Found value: " + m
.group(1) );
System
.out
.println("Found value: " + m
.group(2) );
} else {
System
.out
.println("NO MATCH");
}
}
}
结果如下:
Found value: Welcome To JAVA WORLD QT3000! OK?
Found value: Welcome To JAVA WORLD QT300
Found value: 0