2014-04-03 7 views
0

이 프로그램이 아래 주어진 출력을 어떻게 계산하는지 이해할 수 있습니까?정규식 (정규식) 패턴 일치

import java.util.regex.*; 
class Demo{ 
    public static void main(String args[]) { 
     String name = "abc0x12bxab0X123dpabcq0x3423arcbae0xgfaaagrbcc"; 

     Pattern p = Pattern.compile("[a-c][abc][bca]"); 
     Matcher m = p.matcher(name); 

     while(m.find()) { 
      System.out.println(m.start()+"\t"+m.group());  
     } 
    } 
} 

는 OUTPUT :

0 abc 
18 abc 
30 cba 
38 aaa 
43 bcc 

답변

1

그것은 단순히 "[a-c][abc][bca]"

0 abc --> At position 0, there is [abc]. 
18 abc --> Exact same thing but at position 18. 
30 cba --> At position 30, there is a group of a, b and c (specified by [a-c]) 
38 aaa --> same as 30 
43 bcc --> same as 30 

주의에 의해 지정된 규칙에 따라 경기를 위해 String를 검색 계수는 0에서 시작 그래서 첫 번째 문자는 위치 0 번째 표준시입니다 위치 1 그래서에 ...

추가 정보에 대한 정규식를 들어

와 그것을 사용을 볼 것 : Oracle Tutorial for Regex

1

는 analize 수 있습니다 :
"[a-c][abc][bca]"

이 패턴은 3 글자 각각의 그룹을 찾습니다.

[a-c]

먼저 문자 ac 사이로 그래서 어느 a, b 또는 c

[abc] 두번째 문자가 다음 문자 중 하나 a, b 또는 c 공동 basicly [a-c]되어야 함을 의미 할 수 있음을 의미

[bca] 3 번째 문자는 b 또는 c 또는 a이어야하며, r은 여기에서 중요하지 않습니다. 당신이 알 필요가 무엇

모든 공식 자바 정규식 튜토리얼 http://docs.oracle.com/javase/tutorial/essential/regex/

0

각 문자가, b, 또는 c 중 하나 a 곳이 패턴은 기본적으로 3 글자 단어를 일치에있다.

그런 다음 일치하는 3 문자 시퀀스가 ​​발견 된 색인과 함께 인쇄됩니다.

희망이 있습니다.

0

각 일치 항목이 발생하는 곳에 1 대신 0으로 시작하는 문자열의 위치를 ​​인쇄합니다. 첫 번째 일치 항목 인 "abc"는 위치 0에서 발생합니다. 두 번째 일치 항목 "abc"는 문자열 위치 18에서 발생합니다.

본질적으로 'a', 'b'및 '기음'.

패턴은 "[a-c] {3}"으로 쓰여질 수 있으며 동일한 결과를 얻어야합니다.

0

정규 표현식 자체가 이미 다른 답변에서 잘 설명되었으므로 소스 코드를 살펴보십시오.

//compiles a regexp pattern, kind of make it useable 
Pattern p = Pattern.compile("[a-c][abc][bca]"); 

//creates a matcher for your regexp pattern. This one is used to find this regexp pattern 
//in your actual string name. 
Matcher m = p.matcher(name); 

//loop while the matcher finds a next substring in name that matches your pattern 
while(m.find()) { 
    //print out the index of the found substring and the substring itself 
    System.out.println(m.start()+"\t"+m.group());  
}