Tofer Criss
Tofer Criss

Reputation: 35

How to use multiple different patterns?

how to check strings for multi-pattern regex not for single pattern if tried for one pattern but I need it for multi-pattern and i tried but it doesn't work. when I running these codes just I can get one of them (time or price ) that is in the String but when I combine them don't show me any output.

thanks for your help....

here is my code :

 String line = "This order was  places for QT 30.00$ ! OK? and time is 2:45";
      String pattern = "\\d+[.,]\\d+.[$]"+"\\d:\\d\\d";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );

      } else {
         System.out.println("NO MATCH");
      }

Upvotes: 3

Views: 144

Answers (1)

Andy Thomas
Andy Thomas

Reputation: 86459

The "+" operator does not separate patterns - it concatenates strings.

What you can do is provide a pattern that accepts characters in between the two groups.

  String pattern = "(\\d+[.,]\\d+.[$]).*(\\d:\\d\\d)";

The parentheses above are optional. If you include them, you can get the matched price and time as separate strings:

 if (m.find( )) {
     System.out.println("Found value: " + m.group(1) + " with time: " + m.group(2));
 }

EDIT:

Just noticed your comment that you're looking for OR, not AND.

You can do that with an expression of the form X | Y:

  String pattern = "\\d+[.,]\\d+.[$]|\\d:\\d\\d";

This will match either a price or a time, whichever occurs first. You can get the match with m.group(0).

Upvotes: 7

Related Questions