正则表达式是一个字符串,用来描述匹配一个字符串集合的模式。可以用来检查一个串是否匹配某种子串、将匹配的子串替换或者从某个串中拆分符合某个条件的子串等。正则表达式由字面值字符和特殊符号组成。
例如:
-
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
-
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
二、 正则表达式语法
注:反斜杠是一种特殊的字符,在字符串中开始转义序列。因此Java中需要使用 来表示
- 单词字符是任何的字母,数字或者下划线字符
- 六个条目*、+、 ?、{n}、 {n, }、{n,m}称为量词符。需要注意的是,不可以在重复量词符中使用空白。A{3,6}不能写成逗号后面有一个空白符的A{3, 6}。
- 可以使用括号来将模式进行分组。(ab){3}匹配ababab,但是ab{3}匹配abbb。
- 单词字符是任何的字母,数字或者下划线字符。w等同于[a-z[A-Z][0-9]_]或者简化为[a-Za-z0-9_],等同于[^a-Za-z0-9]。
"Java is fun".matches("Java.*")-->true;
"Java is cool".matches("Java.*")-->true;
"Java is powerful".matches("Java.*")-->true;
语句中的"Java.*"是一个正则表达式。它是一种字符串模式。这种模式是从Java开始,后面跟0个或者多个字符串。而"Java is fun"符合这种模式,所以返回true。其中,子字符串.*匹配0或者多个任意字符。
四、替换、拆分字符串String类也包含了replaceAll、replaceFirst和split方法,用于替换和拆分字符串
- replaceAll方法替换所有匹配的子字符串
- replaceFirst方法替换第一个匹配的子字符串
- split(regex)方法使用匹配的分隔符将一个字符串拆分成子字符串
- split(regex,limit)方法,limit参数确定模式匹配多少次。如果limit<=0,split(regex,limit)等同于split(regex);如果limit>0,模式最多匹配limit-1次。
注:默认情况下,量词符都会尽可能的匹配最多次,可以通过在后面添加问号(?)来使得量词符匹配尽可能少的次数。



