English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java에서 Matcher hasAnchoringBounds() 메서드의 예제

java.util.regex.Matcher 클래스는 여러 가지 매치 작업을 수행하는 엔진을 나타냅니다. 이 클래스는 생성자가 없으며, java.util.regex.Pattern 클래스의 matches() 메서드를 사용하여 생성할 수 있습니다./이 클래스의 객체를 가져옵니다.

앵커링 경계는 区域 매치를 위해 사용됩니다. 예를 들어, ^와 $와 같이. 기본적으로 매치어는 앵커링 범위를 사용합니다. useAnchoringBounds() 메서드를 사용하여 앵커링 범위에서 비앵커링 범위로 전환할 수 있습니다.

이(Matcher) 클래스의hasAnchoringBounds()메서드는 현재 매치어가 앵커링 경계를 사용하고 있는지 확인합니다(그렇다면), 그렇지 않으면 false를 반환합니다.

예제1

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HasAnchoringBoundsExample {
   public static void main(String[] args) {
      String regex = "(.*)\\d"+)\."*)";
      String input = "이는 샘플 텍스트입니다", 1234, 중간에 숫자가 들어 있습니다."
         + "\n	이는 텍스트의 두 번째 줄입니다."
         + "\n텍스트의 세 번째 줄입니다.";
      //pattern 객체 생성
      Pattern pattern = Pattern.compile(regex);
      //Matcher 객체 생성
      Matcher matcher = pattern.matcher(input);
      //anchoring bounds 확인
      boolean bool = matcher.hasAnchoringBounds();
      //일치 여부 확인
      if(bool) {
         System.out.println("Current matcher uses anchoring bounds");
      } else {
         System.out.println("Current matcher uses non-anchoring bounds");
      }
      if(matcher.matches()) {
         System.out.println("일치함");
      } else {
         System.out.println("일치하지 않음");
      }
   }
}

출력 결과

현재 matcher는 anchoring bounds를 사용합니다
일치하지 않음

예제2

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Trail {
   public static void main(String args[]) {
      //문자열 값을 읽는 중
      Scanner sc = new Scanner(System.in);
      System.out.println("입력 문자열을 입력하세요");
      String input = sc.nextLine();
      //digits를 찾는 정규 표현식
      String regex = "."*\\d+.*";
      //정규 표현식 컴파일
      Pattern pattern = Pattern.compile(regex);
      //정규 표현식 출력
      System.out.println("compiled 정규 표현식: "+pattern.toString());
      //matcher 객체를 가져오는 중
      Matcher matcher = pattern.matcher(input);
      matcher.useAnchoringBounds(false);
      boolean hasBounds = matcher.hasAnchoringBounds();
      if(hasBounds) {
         System.out.println("Current matcher uses anchoring bounds");
      } else {
         System.out.println("Current matcher uses non-anchoring bounds");
      }
      //verifying whether match occurred
      if(matcher.matches()) {
         System.out.println("Given String contains digits");
      } else {
         System.out.println("Given String does not contain digits");
      }
   }
}

출력 결과

Enter input string
hello sample 2
Compiled regular expression: .*\d+.*
Current matcher uses non-anchoring bounds
Given String contains digits