简体   繁体   中英

Java RegExp can't get the result ater evaluating pattern

Hi I have been trying to learn RegExpresions using Java I am still at the begining and I wanted to start a little program that is given a string and outputs the syllabels split.This is what I got so far:

    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
   }

What I am trying to do is create a pattern that checks the letters of the given word and if it finds a pattern that contains a vocale/consonant/vocale it will add a "-" like this v-cv .How can I achive this.

In the following example i matched the first vowel and used positive lookahead for the next consonant-vowel group. This is so i can split again if i have a vcvcv group.

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-"));
   }

}

Output:

ma-ma
ma-ma-ma

try

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

replaceAll is a regular expression method

Your pattern only matches if the String starts with a vocal. If you want to find a substring, ignoring the beginning, use

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

If you like to ignore the end too:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM