>  기사  >  Java  >  자세한 설명 및 사용법: Java 정규식 분석

자세한 설명 및 사용법: Java 정규식 분석

WBOY
WBOY원래의
2024-01-09 10:54:331043검색

자세한 설명 및 사용법: Java 정규식 분석

Java 정규식에 대한 자세한 설명 및 사용법

정규식(Regular Expression)은 다양한 프로그래밍 언어에서 널리 사용되는 강력한 텍스트 처리 도구입니다. Java에서는 정규식을 사용하여 문자열 일치, 교체, 분할 및 기타 작업을 수행할 수 있습니다. 이 기사에서는 Java 정규식의 사용을 자세히 소개하고 구체적인 코드 예제를 제공합니다.

  1. 정규 표현식 구문

Java의 정규 표현식 구문은 표준 정규 표현식 구문과 일치합니다. 다음은 일반적으로 사용되는 정규식 메타 문자와 그 의미입니다.

  • d: 모든 숫자와 일치합니다.
  • D: 숫자가 아닌 문자와 일치합니다.
  • w: 문자, 숫자 또는 밑줄과 일치합니다.
  • W: 문자가 아닌 숫자, 밑줄 문자와 일치합니다.
  • s: 공백, 탭, 개행 등을 포함한 모든 공백 문자와 일치합니다.
  • S: 공백이 아닌 문자와 일치합니다.
  • : 단어 경계를 일치시킵니다.
  • ^: 문자열의 시작 위치를 일치시킵니다.
  • $: 문자열의 끝 위치를 일치시킵니다.
  • .: 모든 문자와 일치합니다.
  • *: 0개 이상의 이전 요소와 일치합니다.
  • +: 하나 이상의 이전 요소를 일치시킵니다.
  • ?: 0개 또는 1개의 이전 요소와 일치합니다.
  • {n}: 이전 요소를 정확히 n번 일치시킵니다.
  • {n,}: 이전 요소를 n번 이상 일치시킵니다.
  • {n,m}: 이전 요소를 최소 n회, 최대 m회 일치시킵니다.
  • [...]: 대괄호 안의 문자를 일치시킵니다.
  • 1: 대괄호 안의 문자를 제외한 모든 문자와 일치합니다.

특정 요구 사항에 따라 유연하게 사용할 수 있는 다른 메타 문자와 문법 규칙이 많이 있습니다.

  1. Pattern Class

Java에서 Pattern 클래스는 정규 표현식의 컴파일된 표현입니다. Pattern 클래스에서 제공하는 정적 메서드 compile()를 통해 정규식 문자열을 컴파일하고 Pattern 개체를 생성할 수 있습니다. 예: compile()来编译正则表达式字符串,生成一个Pattern对象。例如:

String regex = "\d+";
Pattern pattern = Pattern.compile(regex);
  1. Matcher类

Matcher类是所有正则表达式匹配操作的引擎。我们可以通过Pattern对象的matcher()方法来创建一个Matcher对象。

  • matches()方法:用于测试正则表达式是否匹配整个字符串。例如:
String regex = "hello";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("hello world");
boolean matched = matcher.matches();
System.out.println(matched); // 输出:true
  • find()方法:用于查找字符串中与正则表达式匹配的子序列。例如:
String regex = "\d+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("abc123def");
while (matcher.find()) {
    System.out.println(matcher.group());
}

以上代码输出结果为:

123
  • replaceAll()
    String regex = "\btom\b";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher("I love tom and tom loves me");
    String result = matcher.replaceAll("Jerry");
    System.out.println(result); // 输出:I love Jerry and Jerry loves me
    1. Matcher 클래스
    1. Matcher 클래스는 모든 정규식 일치 작업을 위한 엔진입니다. Pattern 객체의 matcher() 메소드를 통해 Matcher 객체를 생성할 수 있습니다.

    matches() 메서드: 정규식이 전체 문자열과 일치하는지 테스트하는 데 사용됩니다. 예:

      String regex = "^1[3-9]\d{9}$";
      Pattern pattern = Pattern.compile(regex);
      String phone = "13612345678";
      boolean isValid = pattern.matcher(phone).matches();
      System.out.println(isValid); // 输出:true
    • find() 메서드: 문자열에서 정규식과 일치하는 하위 시퀀스를 찾는 데 사용됩니다. 예:
      String regex = "<a\s.*?href="([^"]+)".*?>";
      Pattern pattern = Pattern.compile(regex);
      String html = "<a href="http://www.example.com">Example</a>";
      Matcher matcher = pattern.matcher(html);
      while (matcher.find()) {
          System.out.println(matcher.group(1));
      }
    • 위 코드의 출력 결과는 다음과 같습니다.
    • http://www.example.com

    replaceAll() 메서드: 정규식과 일치하는 문자열 부분을 바꾸는 데 사용됩니다. 예:

      String regex = "\b\w+\b";
      Pattern pattern = Pattern.compile(regex);
      String text = "Hello world, I love Java!";
      Matcher matcher = pattern.matcher(text);
      List<String> words = new ArrayList<>();
      while (matcher.find()) {
          words.add(matcher.group());
      }
      System.out.println(words);
    • 특정 예

    다음은 정규식 및 해당 코드 예를 사용하는 몇 가지 일반적인 시나리오입니다.


    휴대폰 번호가 합법적인지 확인하세요.
      [Hello, world, I, love, Java]
    1. HTML 텍스트에서 링크 추출 :
    2. rrreee
    위 코드의 출력 결과는 다음과 같습니다. 🎜rrreee🎜🎜문자열을 단어 목록으로 분할합니다. 🎜🎜rrreee🎜위 코드의 출력 결과는 다음과 같습니다. 🎜rrreee🎜요약: 🎜이 글에서는 사용법을 소개합니다. Java 정규식에 대해 자세히 설명하고 구체적인 코드 예제도 제공합니다. 정규식의 구문과 Pattern 및 Matcher 클래스의 사용법을 학습함으로써 정규식을 유연하게 사용하여 문자열을 처리할 수 있습니다. 이 기사가 Java 정규식을 이해하고 사용하는 데 도움이 되기를 바랍니다. 🎜🎜🎜🎜... 🎜↩🎜🎜🎜

    위 내용은 자세한 설명 및 사용법: Java 정규식 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.