我有以下一行,typeName="ABC:xxxxx;";我需要拿這個詞ABC,我寫了以下代碼片段,Pattern pattern4=Pattern.compile("(.*):");matcher=pattern4.matcher(typeName);String nameStr="";if(matcher.find()){ nameStr=matcher.group(1);}所以,如果我說group(0)得到,ABC:但是如果我說group(1)是ABC,那么我想知道這是什么0和1意味著什么呢?如果有人可以用很好的例子向我解釋,那會更好。正則表達式模式中包含一個:,為什么group(1)結果忽略了它?組1是否檢測到括號內的所有單詞?因此,如果我\\s*(\d*)(.*)再加上兩個括號,例如:,那么會有兩個小組嗎?group(1)將退還(\d*)零件并group(2)退還(.*)零件?給出該代碼段的目的是為了消除我的困惑。這不是我要處理的代碼。上面給出的代碼可以用String.split()一種更簡單的方式來完成。
3 回答

www說
TA貢獻1775條經驗 獲得超8個贊
對于我們其余的人
這是一個簡單而清晰的例子
正則表達式: ([a-zA-Z0-9]+)([\s]+)([a-zA-Z ]+)([\s]+)([0-9]+)
串: "!* UserName10 John Smith 01123 *!"
group(0): UserName10 John Smith 01123
group(1): UserName10
group(2):
group(3): John Smith
group(4):
group(5): 01123
如您所見,我創建了五個組,每個組都用括號括起來。
我包括了!*和*!使其更清晰。請注意,這些字符都不在RegEx中,因此不會在結果中產生。Group(0)僅給您整個匹配的字符串(我的所有搜索條件都放在一行中)。第1組在第一個空格之前停止,因為搜索條件中未包含空格字符。第2組和第4組只是空白,在這種情況下,它實際上是一個空格字符,但也可以是制表符或換行符等。第3組包含空格,因為我將其放在搜索條件中...等。
希望這是有道理的。

拉丁的傳說
TA貢獻1789條經驗 獲得超8個贊
括號()用于啟用正則表達式詞組。
該group(1)包含是括號之間的字符串,(.*)所以.*在這種情況下,
并group(0)包含整個匹配的字符串。
如果您有更多組(讀取(...)),它將與下一個索引(2、3等)一起放入組。
添加回答
舉報
0/150
提交
取消