欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中String.matches方法使用

 更新時(shí)間:2024年09月20日 09:51:31   作者:似霰  
String.matches()方法用于檢測(cè)字符串是否符合特定的正則表達(dá)式,詳細(xì)介紹了如何使用String.matches()配合不同的正則表達(dá)式來(lái)匹配各種特定格式的字符串,感興趣的可以了解一下

一、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)題

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

    這篇文章主要介紹了OpenFeign在傳遞參數(shù)為對(duì)象類型是為空的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Struts2+uploadify多文件上傳實(shí)例

    Struts2+uploadify多文件上傳實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Struts2+uploadify多文件上傳實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • RestTemplate調(diào)用POST和GET請(qǐng)求示例詳解

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

    這篇文章主要為大家介紹了RestTemplate調(diào)用POST和GET請(qǐng)求示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java如何獲取相對(duì)路徑文件

    Java如何獲取相對(duì)路徑文件

    這篇文章主要介紹了Java如何獲取相對(duì)路徑文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Java中常見(jiàn)對(duì)象映射工具的使用詳解

    Java中常見(jiàn)對(duì)象映射工具的使用詳解

    對(duì)象映射是 Java 開(kāi)發(fā)中的重要環(huán)節(jié),尤其在處理數(shù)據(jù)轉(zhuǎn)換時(shí),就需要將一種結(jié)構(gòu)的數(shù)據(jù)轉(zhuǎn)換為另一種結(jié)構(gòu)的數(shù)據(jù)(例如 DTO 和 Entity 之間),在這篇博客中,我們將認(rèn)識(shí)并解析幾種常用的對(duì)象映射工具,并提供詳細(xì)樣例,需要的朋友可以參考下
    2025-03-03
  • java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法

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

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件編碼轉(zhuǎn)換的方法,分享一個(gè)文件編碼轉(zhuǎn)換的工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java之NIO基本簡(jiǎn)介

    Java之NIO基本簡(jiǎn)介

    這篇文章主要介紹了Java之NIO基本簡(jiǎn)介,文中給大家講到了NIO?與?BIO的比較結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 深入理解java三種工廠模式

    深入理解java三種工廠模式

    下面小編就為大家?guī)?lái)一篇深入理解java三種工廠模式。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • 最新評(píng)論