2012-04-03 1 views
0

안녕하세요. 저는 Java를 사용하여 RegExpresions을 배우려고 노력했습니다. 저는 아직 시작 단계에 있으며, 문자열이 주어진 작은 프로그램을 시작하고 syllabels split을 출력하려고합니다. 내가 지금까지 무엇을 가지고 있습니다 :Java RegExp가 결과를 가져올 수 없습니다. 패턴을 평가합니다.

String mama = "mama"; 
    Pattern vcv = Pattern.compile("([aeiou][bcdfghjklmnpqrstvwxyz][aeiou])"); 
    Matcher matcher = vcv.matcher(mama); 
    if(matcher){ 
    // the result of this should be ma - ma 
    } 

내가 뭘하려고 오전 주어진 단어의 글자를 확인하는 패턴을 생성하고 그것을이 추가됩니다 vocale/자음/vocale를 포함하는 패턴을 발견하면 "-"이 v-cv처럼. 어떻게 이것을 할 수 있습니까?

답변

2

인 시도. 이것은 내가 vcvcv 그룹을 가지고 있다면 다시 나눌 수 있습니다.

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class Test { 
    public static void main(String[] args) { 
     new Test().run(); 
    } 

    private void run() { 
     String mama = "mama"; 
     Pattern vcv = 
      Pattern.compile("([aeiou])(?=[bcdfghjklmnpqrstvwxyz][aeiou])"); 
     Matcher matcher = vcv.matcher(mama); 

     System.out.println(matcher.replaceAll("$1-")); 
     String mamama = "mamama"; 
     matcher = vcv.matcher(mamama); 
     System.out.println(matcher.replaceAll("$1-")); 
    } 

} 

출력 :

 
ma-ma 
ma-ma-ma 
+0

1 : 당신이 시작을 무시하고, 문자열을 찾으려면 당신이 너무 말 무시하고 싶은 경우에,

Pattern vcv = Pattern.compile (".*([aeiou][bcdfghjklmnpqrstvwxyz][aeiou])"); 

을 사용합니까? (패턴) =와 관련된 (Matcher를) $ 1- –

0

mama.replaceAll('([aeiou])([....][aeiou])', '\1-\2'); 

완전히 대체 제가 첫번째 모음 일치하고 다음 자음, 모음 그룹 긍정적 예측을 사용하는 다음의 예에서, 일반 식에있어서

0

문자열에 보컬로 시작하면 귀하의 패턴은 일치합니다.

모델
Pattern vcv = Pattern.compile (".*([aeiou][bcdfghjklmnpqrstvwxyz][aeiou]).*"); 
관련 문제