2009-09-26 3 views
-1

자바 정규 표현식 튜토리얼을 읽었으며 패턴 일치 여부를 테스트하는 것으로 만 보이지만 일치 패턴을 나타내는 방법은 알려주지 않습니다.Java의 정규 표현식 : "일치 패턴"을 참조하는 방법?

예를 들어, "My name is xxxxx"라는 문자열이 있습니다. 그리고 xxxx를 인쇄하고 싶습니다. Java 정규 표현식으로 어떻게 처리 할 수 ​​있습니까?

감사합니다.

답변

2

? 태양의 이야기는 그 주제를 아주 철저하게 다룬다. 그러나 정확하게 읽어야한다. :)

괄호를 통해 문자열의 일부분을 캡처한다. 문자열에서 그룹을 캡처하려면이 정규 표현식 부분을 괄호 안에 넣어야합니다. 그룹은 괄호가 나타나는 순서대로 정의되며 인덱스가 0 인 그룹은 전체 문자열을 나타냅니다. 예컨대

, 정규 표현식 "날 ([0-9] +) - 주 ([0-9] +)"3 개 그룹을 정의 할 것이다 :

  • 그룹 (0) : 전체 문자열
  • 그룹 (1) : 정규 표현식의 첫 번째 그룹은 그 날 번호를 말을하는 것입니다
  • 그룹 (2) : 정규 표현식의 두 번째 그룹은 그 메모를 말을하는 것입니다 번호
  • 실제 코드 어떻게 당신이 당신의 정규 표현식에 정의 된 한 그룹을 검색하는 방법에 관해서는 6,

는 Java 문서를 살펴, 특히 매처 클래스와 그 그룹 방법이 : http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Matcher.html

당신은 테스트 할 수 있습니다 당신의 그 매우 유용한 도구로 regexps '에이 도움이 http://www.cis.upenn.edu/~matuszek/General/RegexTester/regex-tester.html

희망, 건배

0

당신은 Matchergroup(int) 방법을 사용할 수 있습니다 :

Pattern p = Pattern.compile("My name is (.*)"); 
    Matcher m = p.matcher("My name is akf"); 
    m.find(); 
    String s = m.group(1); //grab the first group* 
    System.out.println(s); 

출력 :

akf 

* matching groups

1

주 패턴에서 괄호를 사용하여보고 Matchergroup() 방법

import java.util.regex.*; 

public class Example { 
    static public void main(String[] args) { 
     Pattern regex = Pattern.compile("My name is (.*)"); 
     String s = "My name is Michael"; 
     Matcher matcher = regex.matcher(s); 

     if (matcher.matches()) { 
      System.out.println("original string: " + matcher.group(0)); 
      System.out.println("first group: " + matcher.group(1)); 
     } 
    } 
} 

출력은 다음과 같습니다 당신이 읽고 있었다 무엇 튜토리얼

original string: My name is Michael 
first group: Michael 
+0

나는 그룹의 개념을 이해하지 않습니다. "My name is Michael Jackson, 그의 이름은 Barack Obama입니다."라는 문자열이 있다고 가정 해 봅니다. 그리고 나는 "마이클 잭슨"과 "버락 오바마"를 붙잡고 싶다. 나는 그것을 어떻게합니까? – Saobi

+0

@Saobi : 괄호에주의하십시오 !!!! –

+0

확인. 알았다. 나는 더 열심히 하나 더 가지고있다 : xxxxxxxxx (살고있는 단어의 숫자가 될 수 있 었는가?) 라이브 또는 죽었습니까? 캡처하고 싶습니다 : xxxxxx, live, die. 어떻게해야합니까? – Saobi

0
Matcher m = Pattern.compile("name is (.*)").matcher("My name is Ross"); 
if (m.find()) { 
    System.out.println(m.group(0)); 
    System.out.println(m.group(1)); 
} 

괄호는 캡처 그룹을 형성. 그룹 0은 전체 패턴이며 그룹 1은 백 참조입니다.

위 프로그램의 출력은 :

name is Ross 
Ross