【Java】正規表現グループマッチング

5705 ワード

グループ一致:
正規表現グループ:3つの数字を一致させるには、次のように書くことができます.
\d{3}

上記のコードは、重複量詞を使用して3桁の数字に一致します.しかし、実際の応用では、abの2文字を繰り返すなど、複数の文字を繰り返す必要があります.以下のコードを使用すると適切ではありません.コードは以下の通りです.
ab{3}

以上の正規表現は3回しかbを繰り返すことができない.複数の文字を繰り返すために、カッコを使用してサブエクスプレッションを指定したり、グループ化したりして、次のような機能を実現できます.
(ab){3}

上の正則はabを繰り返すことができます.パケットとは、いくつかの項目を括弧で含めて独立した論理ドメインにすることであり、独立したユニットを処理するように括弧の内容を処理することができる.
コードの例を次に示します.
(\d{1,3}\.){3}\d{1,3}

上は簡単なipマッチング正規表現です.カッコで囲まれたコンテンツは、独立した論理ドメインとして動作します.グループ化の役割:正規表現では、グループ化が重要な役割を果たしています.以下、その機能について簡単に紹介します.
       /**
		 *     
		 * 
		 */
		@Test
		public void test6() {
			String regex = "(%)(.*?)(%)";//()    
			String str = "%akhscgaijgs% %dgqydfwydf% %aswdd%";
			
			System.out.println(str.replaceAll(regex, "$2"));//$   ,$2   2
			System.out.println(str.replaceAll(regex, "$1aaaa$3"));
		}
		@Test
		public void test7() {
			Pattern pattern = Pattern.compile("(%)(.*?)(%)");//    
			//pattern     ,               
			String str = "%akhscgaijgs% %dgqydfwydf% %aswdd%";
			Matcher m = pattern.matcher(str);
			int i = 0;
			while(m.find()) {//find            
				i++;
				System.out.println(m.group(1) + " aaa "+ m.group(3) + " startIndex"+m.start()+",endIndex:" + m.end());
				//             ,,          
			}
		}