參考部落格:
group
public string group(int
group)
返回在以前匹配操作期間由給定組捕獲的輸入子串行。
對於匹配器 m、輸入序列 s 和組索引 g,表示式 m.group(g) 和 s.substring(m.start(g), m.end(g)) 是等效的。
如果該匹配成功了,但指定組未能匹配輸入序列的任何部分,則返回 null。注意,某些組(例如,(a*))匹配空字串。當這些的組成功匹配輸入中的空字串時,此方法將返回空字串。
指定者: 介面 matchresult 中的 group引數: group - 此匹配器模式中捕獲組的索引。 返回: 在以前的匹配期間組所捕獲的子串行(可能為空);如果組未能匹配輸入的部分,則返回 null。 丟擲: illegalstateexception - 如果沒有嘗試任何匹配,或者以前的匹配操作失敗。 indexoutofbound***ception - 如果在給定索引的模式中不存在捕獲組。
groupcount
public
intgroupcount()
返回此匹配器模式中的捕獲組數。
根據慣例,零組表示整個模式。它不包括在此計數中。
任何小於等於此方法返回值的非負整數保證是此匹配器的有效組索引。
指定者: 介面 matchresult 中的 groupcount返回: 此匹配器模式中的捕獲組數。
判斷身份證:要麼是15位,要麼是18位,最後一位可以為字母,並寫程式提出其中的年月日。
@test
public
void
testid_card() ;
// 準備正規表示式(身份證有15位和18位兩種,身份證的最後一位可能是字母)
string regex = "(\\d\\w)|\\d\\w";
// 準備開始匹配,判斷所有的輸入是否是正確的
pattern regular = pattern.compile(regex); // 建立匹配的規則patter
stringbuilder sb = new stringbuilder();
// 遍歷所有要匹配的字串
for (int i = 0; i < strs.length; i++)
getbirthday(strs);
}private
static
void
getbirthday(string strs) )(\\d)(.*)");
// .*連在一起就意味著任意數量的不包含換行的字元
pattern yearmonthdayregular = pattern
.compile("(\\d)(\\d)(\\d)");
for (int i = 0; i < strs.length; i++) }}
}
result:
身份證: 130681198712092019 匹配:true
身份證: 13068119871209201x 匹配:true
身份證: 13068119871209201 匹配:false
身份證: 123456789012345 匹配:true
身份證: 12345678901234x 匹配:true
身份證: 1234567890123 匹配:false
準備開始獲取出生日期
130681198712092019 中的出生年月分解為: 年1987 月:12 日:09
13068119871209201x 中的出生年月分解為: 年1987 月:12 日:09
13068119871209201 中的出生年月分解為: 年1987 月:12 日:09
123456789012345 中的出生年月分解為: 年7890 月:12 日:34
12345678901234x 中的出生年月分解為: 年7890 月:12 日:34
給乙個人的身份證號,檢視這個人的出生地編碼和出生日期
/**
* 分組
*@date 2016-04-20 17:02:22
*@author sgl
*/public
static
void
group())(\\d)\\d");
matcher m=p.matcher(str);
while(m.find())
system.out.println("-----子表示式取值順序------");
//判斷第幾個表示式時,只看左括號的順序,如下面
//第乙個表示式為((\\d)(\\d))
//第二個表示式為(\\d)
//第三個表示式為(\\d)
p=pattern.compile("((\\d)(\\d))\\d");
m=p.matcher(str);
while(m.find())
}
result:
身份證號:411421199203048877
所屬地區編號:411421
出生日期:19920304
身份證號:433421199304057583
所屬地區編號:433421
出生日期:19930405--
---子表示式取值順序--
----
身份證號:411421199203048877
所屬地區編號
+出生日期:41142119920304
所屬地區編號:411421
出生日期:19920304
身份證號:433421199304057583
所屬地區編號
+出生日期:43342119930405
所屬地區編號:433421
出生日期:19930405
正規表示式之分組捕獲 條件表示式 平衡組
其實我是想說平衡組,但我並是想寫一篇給零基礎的朋友們閱讀,我希望你是對正則有所了解,對平衡組不太了解的朋友閱讀。如果已經了解,看看也無妨。多一點思路。分組捕獲 就是用括號把要匹配的內容擴起來 命名分組捕獲 或 name 就是在分組捕獲的基礎上,增加?分組名 或?分組名 為了鞏固印象,舉個例子 axa...
正規表示式 分組
正規表示式對於單個字元的重複,非常方便。比如 d 表示1個或多個數字,表示重複0次或多次 重複1次或多次 重複0次或1次 重複n次 重複n次或多次 重複n次到m次 指定的字元後加特定的限定符,即可實現單字元的重複,那麼,對於一組字串的重複,正規表示式該如何操作?用小括號來指定子表示式 或稱分組 對指...
分組 正規表示式
在正規表示式中,可以用小括號將一些規則括起來當作分組,分組可以作為乙個元字元來看待。d d這是乙個簡單的且不完善的匹配 ip 位址的正規表示式,因為它除了能匹配正確的 ip 位址外,還能匹配如 322.197.578.888 這種不存在的 ip 位址。當然,用這個表示式簡單匹配成功後可以在利用 ph...