English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
java.regex包的模式类是正则表达式的编译表示。
此类的compile()方法接受表示正则表达式的字符串值,并返回Pattern对象。
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CompileExample { public static void main( String args[] ) { //读取字符串值 Scanner sc = new Scanner(System.in); System.out.println("Enter input string"); String input = sc.nextLine(); //查找数字的正则表达式 String regex = "(\\d)"; //정규 표현식 컴파일 Pattern pattern = Pattern.compile(regex); //打印正则表达式 System.out.println("Compiled regular expression: "}+pattern.toString()); //검색 매치어 객체 Matcher matcher = pattern.matcher(input); //매칭이 발생했는지 확인 if(matcher.find()) { System.out.println("Given String contains digits"); } else { System.out.println("Given String does not contain digits"); } } }
출력 결과
입력 문자열 입력 hello my id is 1120KKA 컴파일된 정규 표현식: (\d) Given String contains digits
이 메서드의 다른 버전은 표시기 값을 나타내는 정수를 받아들이며, 각 표시기는 선택 조건을 지정합니다. 예를 들어, CASE_INSENSITIVE는 정규 표현식을 컴파일할 때 대소문자를 무시합니다.
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class CompileExample { public static void main( String args[] ) { //정규 표현식 컴파일 Pattern pattern = Pattern.compile("[t]", Pattern.CASE_INSENSITIVE); //검색 매치어 객체 Matcher matcher = pattern.matcher("w3codebox); int count = 0; while(matcher.find()) { count++; } System.out.println("일치 횟수: ");+count); } }
출력 결과
입력 문자열 입력 w3codebox 일치 횟수: 3