java中String.matches方法使用
一、String.matches()方法簡(jiǎn)介
1.1 概述
matches() 方法用于檢測(cè)字符串是否匹配給定的正則表達(dá)式。
調(diào)用此方法的 str.matches(regex) 形式與以下表達(dá)式產(chǎn)生的結(jié)果完全相同:
Pattern.matches(regex, str)
1.2 語(yǔ)法、參數(shù)、返回值
語(yǔ)法
public boolean matches(String regex)
參數(shù)
regex -- 匹配字符串的正則表達(dá)式。
返回值
在字符串匹配給定的正則表達(dá)式時(shí),返回 true。
二、String.matches()配合正則表達(dá)式使用
2.1 普通字符匹配
字母、數(shù)字、漢字、下劃線、以及沒(méi)有特殊定義的標(biāo)點(diǎn)符號(hào),都是 “普通字符”。表達(dá)式中的普通字符,在匹配一個(gè)字符串的時(shí)候,匹配與之相同的
一個(gè)
字符。
字符 | 描述 |
---|---|
[abc] | 匹配[…]中所有的字符 |
[^abc] | 匹配除了[…]中所有的字符 |
[A-Z] | 匹配所有區(qū)間A-Z的字符 |
[0-9] | 表示區(qū)間,匹配0-9的數(shù)字 |
. | 匹配除了換行符(\r、\n)之外的任何單個(gè)字符,相當(dāng)于[^\r\n] |
2.1.1 [abc]
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("[abc]"); System.out.println(s1 + " 匹配[abc]結(jié)果 " + result); s1 = "b"; result = s1.matches("[abc]"); System.out.println(s1 + " 匹配[abc]結(jié)果 " + result); s1 = "c"; result = s1.matches("[abc]"); System.out.println(s1 + " 匹配[abc]結(jié)果 " + result); s1 = "ab"; result = s1.matches("[abc]"); System.out.println(s1 + " 匹配[abc]結(jié)果 " + result); s1 = "d"; result = s1.matches("[abc]"); System.out.println(s1 + " 匹配[abc]結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配包含單個(gè)字符的字符串,該字符可以是 a、b 或 c 中的任意一個(gè)。換句話說(shuō),它會(huì)檢查字符串是否只包含 a、b 或 c 中的任意一個(gè)字符。
例如:
“a” 會(huì)匹配成功,因?yàn)樗话粋€(gè)字符并且是 a。
“b” 也會(huì)匹配成功,因?yàn)樗话粋€(gè)字符并且是 b。
“c” 同樣會(huì)匹配成功,因?yàn)樗话粋€(gè)字符并且是 c。
“ab” 不會(huì)匹配成功,因?yàn)樗硕鄠€(gè)字符。
“d” 也不會(huì)匹配成功,因?yàn)樗皇?a、b 或 c 中的任意一個(gè)字符。
因此,如果字符串僅包含 a、b 或 c 中的任意一個(gè)字符,String.matches(“[abc]”) 方法將返回 true,如果字符串包含其他字符或者包含多個(gè)字符,則返回 false。
2.1.2 [^abc]
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); s1 = "b"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); s1 = "c"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); s1 = "d"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); s1 = "e"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); s1 = "ab"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc]結(jié)果 " + result); }
Result:
解析:
在正則表達(dá)式中,^ 表示取反,[^abc] 表示匹配任意一個(gè)字符,但是不能是 a、b 或 c 中的任何一個(gè)。
例如:
“a” 也不會(huì)匹配成功,因?yàn)樗?a。
“b” 也不會(huì)匹配成功,因?yàn)樗?b。
“c” 也不會(huì)匹配成功,因?yàn)樗?c。
“d” 會(huì)匹配成功,因?yàn)樗话粋€(gè)字符并且不是 a、b 或 c。
“e” 也會(huì)匹配成功,因?yàn)樗话粋€(gè)字符并且不是 a、b 或 c。
“ab” 不會(huì)匹配成功,因?yàn)樗硕鄠€(gè)字符。
因此,如果字符串只包含一個(gè)字符并且不是 a、b 或 c 中的任何一個(gè),String.matches(“[^abc]”) 方法將返回 true,如果字符串包含其他字符或者包含多個(gè)字符,則返回 false。
2.1.3 [A-Z]
public static void main(String[] args) { String s1 = "A"; boolean result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); s1 = "B"; result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); s1 = "Z"; result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); s1 = "a"; result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); s1 = "AB"; result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); s1 = "1"; result = s1.matches("[A-Z]"); System.out.println(s1 + " 匹配[A-Z]結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配一個(gè)大寫(xiě)字母,即 A 到 Z 中的任意一個(gè)字母。
例如:
“A” 會(huì)匹配成功,因?yàn)樗谴髮?xiě)字母 A。
“B” 也會(huì)匹配成功,因?yàn)樗谴髮?xiě)字母 B。
“Z” 也會(huì)匹配成功,因?yàn)樗谴髮?xiě)字母 Z。
“a” 不會(huì)匹配成功,因?yàn)樗切?xiě)字母。
“AB” 不會(huì)匹配成功,因?yàn)樗鄠€(gè)字符。
“1” 也不會(huì)匹配成功,因?yàn)樗皇亲帜浮?br />因此,如果字符串只包含一個(gè)大寫(xiě)字母,String.matches(“[A-Z]”) 方法將返回 true,如果字符串包含其他字符、小寫(xiě)字母或者包含多個(gè)字符,返回 false。
2.1.4 [0-9]
public static void main(String[] args) { String s1 = "0"; boolean result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); s1 = "5"; result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); s1 = "9"; result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); s1 = "a"; result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); s1 = "12"; result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); s1 = "x"; result = s1.matches("[0-9]"); System.out.println(s1 + " 匹配[0-9]結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配一個(gè)數(shù)字字符,即 0 到 9 中的任意一個(gè)數(shù)字。
例如:
“0” 會(huì)匹配成功,因?yàn)樗菙?shù)字 0。
“5” 也會(huì)匹配成功,因?yàn)樗菙?shù)字 5。
“9” 也會(huì)匹配成功,因?yàn)樗菙?shù)字 9。
“a” 不會(huì)匹配成功,因?yàn)樗皇菙?shù)字。
“12” 不會(huì)匹配成功,因?yàn)樗鄠€(gè)字符。
“x” 也不會(huì)匹配成功,因?yàn)樗皇菙?shù)字。
因此,如果字符串只包含一個(gè)數(shù)字字符,String.matches(“[0-9]”) 方法將返回 true,如果字符串包含其他字符或者包含多個(gè)字符,返回 false。
2.1.5 .
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); s1 = "1"; result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); s1 = " "; result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); s1 = "\n"; result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); s1 = "\r"; result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); s1 = "ab"; result = s1.matches("."); System.out.println(s1 + " 匹配.結(jié)果 " + result); System.out.println(" 斜杠r的作用 \r 斜杠n的作用 \n 都是換行 " ); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配任意一個(gè)字符,除了換行符以外的所有字符。
例如:
“a” 會(huì)匹配成功,因?yàn)樗话粋€(gè)字符。
“1” 也會(huì)匹配成功,因?yàn)樗话粋€(gè)字符。
" " 也會(huì)匹配成功,因?yàn)樗话粋€(gè)空格字符。
“\n” 不會(huì)匹配成功,因?yàn)樗且粋€(gè)換行符。
“\r” 不會(huì)匹配成功,因?yàn)樗且粋€(gè)換行符。
“ab” 不會(huì)匹配成功,因?yàn)樗硕鄠€(gè)字符。
因此,如果字符串只包含一個(gè)字符,String.matches(“.”) 方法將返回 true,如果字符串包含多個(gè)字符或者包含換行符,返回 false。
2.2 單個(gè)符號(hào)匹配
字符 | 描述 |
---|---|
[ ] | 只有方括號(hào)里面指定的字符才參與匹配,也只能匹配單個(gè)字符。 |
| | 相當(dāng)于“或”,可以匹配指定的字符,但是也只能選擇其中一項(xiàng)進(jìn)行匹配。 |
^ | 表示否,如果用在方括號(hào)內(nèi),^表示不想匹配的字符。 |
\S | 非空字符 |
\s | 空字符,只可以匹配一個(gè)空格、制表符、回車符、換頁(yè)符,不可以匹配自己輸入的多個(gè)空格。 |
2.2.1 中括號(hào)[ ]
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "ad"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "aad"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "abd"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "acd"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "aod"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); s1 = "abcd"; result = s1.matches("a[abc]d"); System.out.println(s1 + " 匹配a[abc]d 結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配一個(gè)以"a"開(kāi)頭,然后是"a"、“b” 或 “c” 中的任意一個(gè)字符,然后是"d"結(jié)尾的字符串。
例如:
“a” 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a"、“b” 或 “c” 中的任意一個(gè),且沒(méi)有以d結(jié)尾。
“ad” 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a"、“b” 或 “c” 中的任意一個(gè)。
“aad” 會(huì)匹配成功,因?yàn)樗?quot;a"開(kāi)頭,然后是"a",最后是"d"。
“abd” 會(huì)匹配成功,因?yàn)樗?quot;a"開(kāi)頭,然后是"b",最后是"d"。
“acd” 會(huì)匹配成功,因?yàn)樗?quot;a"開(kāi)頭,然后是"c",最后是"d"。
“aod” 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a"、“b” 或 “c” 中的任意一個(gè)。
“abcd” 不會(huì)匹配成功,因?yàn)樗硕鄠€(gè)字符。
因此,如果字符串符合以"a"開(kāi)頭,然后是"a"、“b” 或 “c” 中的任意一個(gè)字符,最后是"d"結(jié)尾的模式,String.matches(“a[abc]d”) 方法將返回 true,如果字符串不符合這個(gè)模式,返回 false。
2.2.2 或符號(hào) |
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "ad"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "aad"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "abd"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "acd"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "aod"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); s1 = "abcd"; result = s1.matches("a(a|b|c)d"); System.out.println(s1 + " 匹配a(a|b|c)d 結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配一個(gè)以"a"開(kāi)頭,然后是"a"、“b” 或 “c” 中的任意一個(gè)字符,最后是"d"結(jié)尾的字符串。在正則表達(dá)式中,(a|b|c) 表示一個(gè)分組,其中的字符"a"、“b” 或 “c"中的任意一個(gè)字符。
例如:
“a” 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a”、“b” 或 “c” 中的任意一個(gè),且沒(méi)有以d結(jié)尾。
“ad " 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a”、“b” 或 “c” 中的任意一個(gè)。
“aad” 會(huì)匹配成功,因?yàn)樗?quot;a “開(kāi)頭,然后是"a”,最后是"d"。
“abd” 會(huì)匹配成功,因?yàn)樗?quot;a"開(kāi)頭,然后是"b",最后是"d"。
“acd” 會(huì)匹配成功,因?yàn)樗?quot;a"開(kāi)頭,然后是"c",最后是"d"。
“aod” 不會(huì)匹配成功,因?yàn)樗牡诙€(gè)字符不是"a"、“b” 或 “c” 中的任意一個(gè)。
“abcd” 不會(huì)匹配成功,因?yàn)樗硕鄠€(gè)字符。
因此,如果字符串符合以"a"開(kāi)頭,然后是"a"、“b” 或 “c” 中的任意一個(gè)字符,最后是"d"結(jié)尾的模式,String.matches(“a(a|b|c)d”) 方法將返回 true,如果字符串不符合這個(gè)模式,返回 false。
2.2.3 ^ 符號(hào)
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc] 結(jié)果 " + result); s1 = "d"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc] 結(jié)果 " + result); s1 = "e"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc] 結(jié)果 " + result); s1 = "ab"; result = s1.matches("[^abc]"); System.out.println(s1 + " 匹配[^abc] 結(jié)果 " + result); }
Result:
解析:
這個(gè)正則表達(dá)式表示匹配一個(gè)不是"a"、“b” 或 “c” 中的任意一個(gè)字符的字符串。方括號(hào)內(nèi)的^ 表示取反,表示匹配不在指定字符集合中的任意一個(gè)字符。
例如:
“a” 不會(huì)匹配成功,因?yàn)樗?quot;a"、“b” 或 “c” 中的一個(gè)字符。
“d” 會(huì)匹配成功,因?yàn)樗皇?quot;a"、“b” 或 “c” 中的任意一個(gè)字符。
“e” 會(huì)匹配成功,因?yàn)樗皇?quot;a"、“b” 或 “c” 中的任意一個(gè)字符。
“ab” 不會(huì)匹配成功,因?yàn)樗?quot;a"和"b"兩個(gè)字符。
因此,如果字符串不是"a"、“b” 或 “c” 中的任意一個(gè)字符,String.matches(“[^abc]”) 方法將返回 true,如果字符串是這些字符之一,返回 false。
2.2.4 \S 符號(hào)
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("\\S"); System.out.println(s1 + " 匹配\\S 結(jié)果 " + result); s1 = "1"; result = s1.matches("\\S"); System.out.println(s1 + " 匹配\\S 結(jié)果 " + result); s1 = "!"; result = s1.matches("\\S"); System.out.println(s1 + " 匹配\\S 結(jié)果 " + result); s1 = " "; result = s1.matches("\\S"); System.out.println(s1 + " 匹配\\S 結(jié)果 " + result); s1 = "\t"; result = s1.matches("\\S"); System.out.println(s1 + " 匹配\\S 結(jié)果 " + result); }
Result:
解析:
在正則表達(dá)式中,\S 表示匹配任意非空白字符。這包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)等,只要不是空格、制表符等空白字符就可以匹配。
例如:
“a” 會(huì)匹配成功,因?yàn)樗且粋€(gè)非空白字符。
“1” 會(huì)匹配成功,因?yàn)樗且粋€(gè)非空白字符。
“!” 會(huì)匹配成功,因?yàn)樗且粋€(gè)非空白字符。
" " 不會(huì)匹配成功,因?yàn)樗且粋€(gè)空白字符。
“\t” 不會(huì)匹配成功,因?yàn)樗且粋€(gè)空白字符。
因此,如果字符串是一個(gè)非空白字符,String.matches(“\S”) 方法將返回 true,如果字符串是一個(gè)空白字符,返回 false。
2.2.5 \s 符號(hào)
public static void main(String[] args) { String s1 = " "; boolean result = s1.matches("\\s"); System.out.println(s1 + " 匹配\\s 結(jié)果 " + result); s1 = "\t"; result = s1.matches("\\s"); System.out.println(s1 + " 匹配\\s 結(jié)果 " + result); s1 = "\n"; result = s1.matches("\\s"); System.out.println(s1 + " 匹配\\s 結(jié)果 " + result); s1 = "a"; result = s1.matches("\\s"); System.out.println(s1 + " 匹配\\s 結(jié)果 " + result); }
Result:
解析:
在正則表達(dá)式中,\s 表示匹配任意空白字符。這包括空格、制表符、換行符等。
例如:
" " 會(huì)匹配成功,因?yàn)樗且粋€(gè)空白字符。
“\t” 會(huì)匹配成功,因?yàn)樗且粋€(gè)空白字符。
“\n” 會(huì)匹配成功,因?yàn)樗且粋€(gè)空白字符。
“a” 不會(huì)匹配成功,因?yàn)樗皇且粋€(gè)空白字符。
因此,如果字符串是一個(gè)空白字符,String.matches(“\s”) 方法將返回 true,如果字符串不是一個(gè)空白字符,返回 false。
2.3 轉(zhuǎn)義字符
字符 | 描述 |
---|---|
\^ | 匹配^符號(hào)本身 |
\$ | 匹配$符號(hào)本身 |
\. | 匹配小數(shù)點(diǎn)本身 |
\r,\n | 回車和換行符 |
\t | 制表符 |
\\ | 代表 ”\“ 本身 |
這個(gè)就比較簡(jiǎn)單不做代碼測(cè)試了,需要注意的是對(duì)于Java中的\\理解
Java中正則表達(dá)式的\
\表示將下一字符標(biāo)記為特殊字符。如\d表示數(shù)字字符匹配,等效于 [0-9]。\w表示匹配任何字類字符(字母數(shù)字下劃線),注意包括下劃線。與"[A-Za-z0-9_]"等效。
\\中的第一個(gè)\表示java的轉(zhuǎn)義字符\ 由編譯器解析,第二個(gè)\是正則表達(dá)式\ 由正則表達(dá)式引擎解析。
關(guān)于Java正則和轉(zhuǎn)義中\(zhòng)和\和\\的理解
2.4 匹配 ‘多種字符’ 其中的任意一個(gè)字符
字符 | 描述 |
---|---|
\d | 任意一個(gè)數(shù)字 0-9中任意一個(gè) |
\w | 任意一個(gè)字母或數(shù)字或下劃線,也就是A-Z,a-z,0-9,_,任意一個(gè) |
\s | 空格、制表符、換行符等空白字符中的任意一個(gè) |
\s上面已經(jīng)有測(cè)試?yán)恿?,看一下\d 和\w的簡(jiǎn)單測(cè)試
2.4.1 \d
\d ,但在java中需要\\d
public static void main(String[] args) { String s1 = "1"; boolean result = s1.matches("\\d"); System.out.println(s1 + " 匹配\\d 結(jié)果 " + result); s1 = "5"; result = s1.matches("\\d"); System.out.println(s1 + " 匹配\\d 結(jié)果 " + result); s1 = "a"; result = s1.matches("\\d"); System.out.println(s1 + " 匹配\\d 結(jié)果 " + result); s1 = "10"; result = s1.matches("\\d"); System.out.println(s1 + " 匹配\\d 結(jié)果 " + result); }
Result:
解析:
在正則表達(dá)式中,\d 表示匹配一個(gè)數(shù)字字符。換句話說(shuō),它只匹配數(shù)字 0-9 中的任意一個(gè)字符。
例如:
“1” 會(huì)匹配成功,因?yàn)樗且粋€(gè)數(shù)字字符。
“5” 會(huì)匹配成功,因?yàn)樗且粋€(gè)數(shù)字字符。
“a” 不會(huì)匹配成功,因?yàn)樗皇且粋€(gè)數(shù)字字符。
“10” 不會(huì)匹配成功,因?yàn)樗藘蓚€(gè)字符。
因此,如果字符串是一個(gè)數(shù)字字符,String.matches(“\\d”) 方法將返回 true,如果字符串不是一個(gè)數(shù)字字符,并且返回 false。
2.4.2 \w
public static void main(String[] args) { String s1 = "a"; boolean result = s1.matches("\\w"); System.out.println(s1 + " 匹配\\w 結(jié)果 " + result); s1 = "5"; result = s1.matches("\\w"); System.out.println(s1 + " 匹配\\w 結(jié)果 " + result); s1 = "_"; result = s1.matches("\\w"); System.out.println(s1 + " 匹配\\w 結(jié)果 " + result); s1 = "!"; result = s1.matches("\\w"); System.out.println(s1 + " 匹配\\w 結(jié)果 " + result); }
Result:
解析:
在正則表達(dá)式中,\w 表示匹配一個(gè)單詞字符,包括字母、數(shù)字和下劃線。換句話說(shuō),它匹配字母數(shù)字字符以及下劃線。
例如:
“a” 會(huì)匹配成功,因?yàn)樗且粋€(gè)單詞字符。
“5” 會(huì)匹配成功,因?yàn)樗且粋€(gè)單詞字符。
“_” 會(huì)匹配成功,因?yàn)樗且粋€(gè)單詞字符。
“!” 不會(huì)匹配成功,因?yàn)樗皇且粋€(gè)單詞字符。
因此,如果字符串是一個(gè)單詞字符,String.matches(“\\w”) 方法將返回 true,如果字符串不是一個(gè)單詞字符,返回 false。
2.5 匹配次數(shù)的特殊符號(hào)
前面的表達(dá)式,無(wú)論是單個(gè)字符,還是多種字符其中的一個(gè),都只能匹配一次。如果使用表達(dá)式再加上修飾匹配次數(shù)的特殊符號(hào),那么不用重復(fù)書(shū)寫(xiě)表達(dá)式就可以重復(fù)多次匹配。注:特殊符號(hào)修飾的是它前面的表達(dá)式
字符 | 描述 |
---|---|
{n} | 表達(dá)式重復(fù)n次,例”\d{2}“相當(dāng)于”\d\d“,可以匹配到11,12, 13 |
{m,n} | 表達(dá)式至少重復(fù)m次,最多重復(fù)n次,例”\w{2,3}",可以匹配ac,ad,acd,但是無(wú)法匹配abcd |
{m,} | 表達(dá)式至少重復(fù)m次,最多不設(shè)限 |
? | 表達(dá)式0次或1次,相當(dāng)于{0,1} |
+ | 表達(dá)式至少出現(xiàn)1次,相當(dāng)于{1,} |
* | 表達(dá)式不出現(xiàn)或出現(xiàn)任意次,相當(dāng)于{0,} |
做一個(gè)測(cè)試?yán)樱?/p>
public static void main(String[] args) { System.out.println("------{n}測(cè)試-------"); String s1 = "1"; boolean result = s1.matches("\\d{2}"); System.out.println(s1 + " 匹配\\d{2} 結(jié)果 " + result); s1 = "12"; result = s1.matches("\\d{2}"); System.out.println(s1 + " 匹配\\d{2} 結(jié)果 " + result); s1 = "123"; result = s1.matches("\\d{2}"); System.out.println(s1 + " 匹配\\d{2} 結(jié)果 " + result); System.out.println("------{n}測(cè)試完畢-------"+"\n"); System.out.println("------{m,n}測(cè)試-------"); s1 = "1"; result = s1.matches("\\w{2,3}"); System.out.println(s1 + " 匹配\\w{2,3} 結(jié)果 " + result); s1 = "12"; result = s1.matches("\\w{2,3}"); System.out.println(s1 + " 匹配\\w{2,3} 結(jié)果 " + result); s1 = "123"; result = s1.matches("\\w{2,3}"); System.out.println(s1 + " 匹配\\w{2,3} 結(jié)果 " + result); s1 = "1234"; result = s1.matches("\\w{2,3}"); System.out.println(s1 + " 匹配\\w{2,3} 結(jié)果 " + result); System.out.println("------{m,n}測(cè)試完畢-------"+"\n"); System.out.println("------{m,}測(cè)試-------"); s1 = "1"; result = s1.matches("\\w{3,}"); System.out.println(s1 + " 匹配\\w{3,} 結(jié)果 " + result); s1 = "12"; result = s1.matches("\\w{3,}"); System.out.println(s1 + " 匹配\\w{3,} 結(jié)果 " + result); s1 = "123"; result = s1.matches("\\w{3,}"); System.out.println(s1 + " 匹配\\w{3,} 結(jié)果 " + result); s1 = "1234"; result = s1.matches("\\w{3,}"); System.out.println(s1 + " 匹配\\w{3,} 結(jié)果 " + result); System.out.println("------{m,}測(cè)試完畢-------"+"\n"); System.out.println("------?測(cè)試-------"); s1 = "ab"; result = s1.matches("ab[cd]?e"); System.out.println(s1 + " 匹配ab[cd]?e 結(jié)果 " + result); s1 = "abe"; result = s1.matches("ab[cd]?e"); System.out.println(s1 + " 匹配ab[cd]?e 結(jié)果 " + result); s1 = "abce"; result = s1.matches("ab[cd]?e"); System.out.println(s1 + " 匹配ab[cd]?e 結(jié)果 " + result); s1 = "abcde"; result = s1.matches("ab[cd]?e"); System.out.println(s1 + " 匹配ab[cd]?e 結(jié)果 " + result); System.out.println("------?測(cè)試完畢-------"+"\n"); System.out.println("------+測(cè)試-------"); s1 = "ab"; result = s1.matches("ab[cd]+e"); System.out.println(s1 + " 匹配ab[cd]+e 結(jié)果 " + result); s1 = "abe"; result = s1.matches("ab[cd]+e"); System.out.println(s1 + " 匹配ab[cd]+e 結(jié)果 " + result); s1 = "abce"; result = s1.matches("ab[cd]+e"); System.out.println(s1 + " 匹配ab[cd]+e 結(jié)果 " + result); s1 = "abcde"; result = s1.matches("ab[cd]+e"); System.out.println(s1 + " 匹配ab[cd]+e 結(jié)果 " + result); System.out.println("------+測(cè)試完畢-------"+"\n"); System.out.println("------*測(cè)試-------"); s1 = "ab"; result = s1.matches("ab[cd]*e"); System.out.println(s1 + " 匹配ab[cd]*e 結(jié)果 " + result); s1 = "abe"; result = s1.matches("ab[cd]*e"); System.out.println(s1 + " 匹配ab[cd]*e 結(jié)果 " + result); s1 = "abce"; result = s1.matches("ab[cd]*e"); System.out.println(s1 + " 匹配ab[cd]*e 結(jié)果 " + result); s1 = "abcde"; result = s1.matches("ab[cd]*e"); System.out.println(s1 + " 匹配ab[cd]*e 結(jié)果 " + result); System.out.println("------*測(cè)試完畢-------"+"\n"); }
Result:
------{n}測(cè)試-------
1 匹配\d{2} 結(jié)果 false
12 匹配\d{2} 結(jié)果 true
123 匹配\d{2} 結(jié)果 false
------{n}測(cè)試完畢-------------{m,n}測(cè)試-------
1 匹配\w{2,3} 結(jié)果 false
12 匹配\w{2,3} 結(jié)果 true
123 匹配\w{2,3} 結(jié)果 true
1234 匹配\w{2,3} 結(jié)果 false
------{m,n}測(cè)試完畢-------------{m,}測(cè)試-------
1 匹配\w{3,} 結(jié)果 false
12 匹配\w{3,} 結(jié)果 false
123 匹配\w{3,} 結(jié)果 true
1234 匹配\w{3,} 結(jié)果 true
------{m,}測(cè)試完畢-------------?測(cè)試-------
ab 匹配ab[cd]?e 結(jié)果 false
abe 匹配ab[cd]?e 結(jié)果 true
abce 匹配ab[cd]?e 結(jié)果 true
abcde 匹配ab[cd]?e 結(jié)果 false
------?測(cè)試完畢-------------+測(cè)試-------
ab 匹配ab[cd]+e 結(jié)果 false
abe 匹配ab[cd]+e 結(jié)果 false
abce 匹配ab[cd]+e 結(jié)果 true
abcde 匹配ab[cd]+e 結(jié)果 true
------+測(cè)試完畢-------------*測(cè)試-------
ab 匹配ab[cd]*e 結(jié)果 false
abe 匹配ab[cd]*e 結(jié)果 true
abce 匹配ab[cd]*e 結(jié)果 true
abcde 匹配ab[cd]*e 結(jié)果 true
------*測(cè)試完畢-------
三、其他正則表達(dá)式
表達(dá)式實(shí)在太多而且可以自定義無(wú)窮無(wú)盡,但是相信小白看完這篇文章后,對(duì)于java使用正則表達(dá)式已經(jīng)入門(mén)了,附上一些參考鏈接,里面有很多正則表達(dá)式的例子。
關(guān)于Java正則和轉(zhuǎn)義中\(zhòng)和\和\\的理解
Java 正則表達(dá)式的用法和實(shí)例
Java 之正則表達(dá)式語(yǔ)法及常用正則表達(dá)式匯總
java正則表達(dá)式大全(常用)
到此這篇關(guān)于java中String.matches方法使用的文章就介紹到這了,更多相關(guān)java String.matches內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

OpenFeign在傳遞參數(shù)為對(duì)象類型是為空的問(wèn)題

RestTemplate調(diào)用POST和GET請(qǐng)求示例詳解

java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法