Quantifiers:
? - zero or one
* - zero or more
+ - one ore more
Regex - Regular Expressions. This is one of the difficult topics for me. Here is one program to show work with quantifiers.
? - zero or one
* - zero or more
+ - one ore more
Regex - Regular Expressions. This is one of the difficult topics for me. Here is one program to show work with quantifiers.
/* * Regex - Quantifiers. Link for API: http://docs.oracle.com/javase/tutorial/essential/regex/quant.html * */ package pattern_matcher_test_01; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author Alex */ public class Quantifiers { /** * @param args the command line arguments */ public static void main(String[] args) { FirstTest(); SecondTest(); PlusTest(); DotTest(); GreedyDotTest(); DotStarTest(); } public static void FirstTest() { Pattern p = Pattern.compile("ab"); //a, followed by b Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"ab\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } public static void SecondTest() { Pattern p = Pattern.compile("ab+"); //a, followed by b one or more times (It would not mean "ab" one or more times) Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"ab+\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } public static void DotTest() { Pattern p = Pattern.compile("ab."); //a, followed by b, followed by any character Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"ab.\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } public static void PlusTest() { Pattern p = Pattern.compile("(ab)+"); //"ab" one or more times Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"(ab)+\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } public static void GreedyDotTest() { Pattern p = Pattern.compile("ab.*"); //ab, followed by "anything", zero or more times Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"ab.*\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } public static void DotStarTest() { Pattern p = Pattern.compile("a.*?b"); //a, followed by "anything", zero or more times, followed by b Matcher m = p.matcher("_abab1abb2abba3aab"); int i = 0; while (m.find()){ System.out.println("\"a.*?b\" found: " + m.start() +" " + m.group()); i++; } System.out.println("found: " + i + " time(s)" + "\n"); } } This produces output: "ab" found: 1 ab "ab" found: 3 ab "ab" found: 6 ab "ab" found: 10 ab "ab" found: 16 ab found: 5 time(s) "ab+" found: 1 ab "ab+" found: 3 ab "ab+" found: 6 abb "ab+" found: 10 abb "ab+" found: 16 ab found: 5 time(s) "(ab)+" found: 1 abab "(ab)+" found: 6 ab "(ab)+" found: 10 ab "(ab)+" found: 16 ab found: 4 time(s) "ab." found: 1 aba "ab." found: 6 abb "ab." found: 10 abb found: 3 time(s) "ab.*" found: 1 abab1abb2abba3aab found: 1 time(s) "a.*?b" found: 1 ab "a.*?b" found: 3 ab "a.*?b" found: 6 ab "a.*?b" found: 10 ab "a.*?b" found: 13 a3aab found: 5 time(s)
No comments:
Post a Comment