다음은 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