Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 정규식을 사용하여 문자열에서 숫자 추출

다음은 Java에서 정규식을 사용하여 문자열에서 숫자를 추출하는 방법을 보여주는 예제입니다.

문자열을 구문 분석하고 정보를 추출할 수 있는 것은 모든 테스터가 갖추어야 할 핵심 기술입니다. 이것은 API를 테스트할 때 특히 유용하며 JSON 또는 XML 응답을 구문 분석해야 합니다.

다음 Java 정규식 예제는 문자열에서 숫자 또는 숫자 추출에 중점을 둡니다.

문자열에서 모든 숫자 추출

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[]args) {
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher("string1234more567string890");
        while(m.find()) {
            System.out.println(m.group());
        }
    }
}

출력:

1234
567
890

관련:

  • Java에서 String을 Int로 변환하는 방법
  • 자바에서 문자열을 뒤집는 방법
  • 자바에서 문자열을 비교하는 방법

문자열에서 n번째 숫자 추출

문자열에서 특정 숫자만 추출하려면 group()에 색인을 제공할 수 있습니다. 기능.

예를 들어 string1234more567string890 문자열에서 두 번째 숫자 집합만 추출하려는 경우 , 예:567 다음을 사용할 수 있습니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    private static final Pattern p = Pattern.compile("[^\\d]*[\\d]+[^\\d]+([\\d]+)");
    public static void main(String[] args) {
        // create matcher for pattern p and given string
        Matcher m = p.matcher("string1234more567string890");

        // if an occurrence if a pattern was found in a given string...
        if (m.find()) {
            System.out.println(m.group(1)); // second matched digits
        }
    }
}

출력:

567

패턴 설명 [^\d]*[\d]+[^\d]+([\d]+)

  • 숫자가 아닌 경우 무시
  • 모든 숫자(첫 번째 숫자) 무시
  • 숫자가 아닌 경우 다시 무시
  • 두 번째 숫자 캡처

태그 속성에서 번호 추출

XML 또는 HTML 태그를 처리할 때 속성에서 값을 추출해야 하는 경우가 있습니다. 예를 들어 다음 태그를 고려하십시오.

<result name="response" numFound="9999" start="0">

숫자 9999를 추출하려면 다음 코드를 사용할 수 있습니다.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[]args) {
        Pattern pattern = Pattern.compile("numFound=\"([0-9]+)\"");
        Matcher matcher = pattern.matcher("");

        if (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }
}

출력:

9999

숫자와 문자를 포함하는 문자열 추출

Java 정규식을 사용하여 숫자와 문자가 포함된 문자열의 일부를 추출할 수 있습니다. 다음 문자열이 있다고 가정합니다. Sample_data = YOUR SET ADDRESS IS 6B1BC0 TEXT 그리고 6B1BC0을 추출하고 싶습니다. 6자입니다. , 우리는 다음을 사용할 수 있습니다:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main (String[] args) {
        Pattern p = Pattern.compile("YOUR SET ADDRESS IS\\s+([A-Z0-9]{6})");
        Matcher n = p.matcher("YOUR SET ADDRESS IS 6B1BC0 TEXT");
        if (n.find()) {
            System.out.println(n.group(1)); // Prints 123456
        }
    }
}

출력:

6B1BC0

정규 표현식으로 키-값 쌍 추출

bookname=testing&bookid=123456&bookprice=123.45 형식의 문자열이 있다고 가정해 보겠습니다. 키-값 쌍 bookid=123456을 추출하려고 합니다. 우리는 다음을 사용할 것입니다:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExamples {
    public static void main(String[] args) {
        String s = "bookname=cooking&bookid=123456&bookprice=123.45";
        Pattern p = Pattern.compile("(?<=bookid=)\\d+");
        Matcher m = p.matcher(s);
        if (m.find()) {
            System.out.println(m.group());
        }
    }
}

출력:

123456