How to use regular
expressions with String methods in Java?
Strings in Java have built-in support for regular
expressions. Strings have 4 built-in methods for regular expressions,
i.e., the matches(), split()), replaceFirst() and replaceAll() methods.
Method
|
Description
|
s.split("regex") |
Creates an array with substrings of
s divided at occurrence of "regex". "regex" is not included in the result. |
s.replaceFirst("regex"),
"replacement" |
Replaces first occurrence of
"regex" with replacement. |
s.matches("regex") |
Evaluates if
"regex" matches s. Returns only true if the WHOLE
string can be matched. |
s.replaceAll("regex"),
"replacement" |
Replaces all occurrences of
"regex" with replacement. |
Now lets see the implementation of regex in Java String.
package com.codebyakram.regex;
public class RegexTest {
public static final String DATA = "This is my small example "
+ "string which I'm going to " + "use for pattern matching.";
public static void main(String[] args) {
System.out.println(DATA.matches("\\w.*"));
String[] splitString = (DATA.split("\\s+"));
System.out.println(splitString.length);// should be 14
for (String string : splitString) {
System.out.println(string);
}
// replace all whitespace with tabs
System.out.println(DATA.replaceAll("\\s+", "\t"));
}
}
ExamplesNow let’s see another example for regex in Java.
package com.codebyakram.regex;;
public class StringMatcher {
// returns true if the string matches exactly "true"
public boolean isTrue(String s){
return s.matches("true");
}
// returns true if the string matches exactly "true" or "True"
public boolean isTrueVersion2(String s){
return s.matches("[tT]rue");
}
// returns true if the string matches exactly "true" or "True"
// or "yes" or "Yes"
public boolean isTrueOrYes(String s){
return s.matches("[tT]rue|[yY]es");
}
// returns true if the string contains exactly "true"
public boolean containsTrue(String s){
return s.matches(".*true.*");
}
// returns true if the string contains of three letters
public boolean isThreeLetters(String s){
return s.matches("[a-zA-Z]{3}");
// simpler from for
// return s.matches("[a-Z][a-Z][a-Z]");
}
// returns true if the string does not have a number at the beginning
public boolean isNoNumberAtBeginning(String s){
return s.matches("^[^\\d].*");
}
// returns true if the string contains a arbitrary number of characters except b
public boolean isIntersection(String s){
return s.matches("([\\w&&[^b]])*");
}
// returns true if the string contains a number less than 300
public boolean isLessThenThreeHundred(String s){
return s.matches("[^0-9]*[12]?[0-9]{1,2}[^0-9]*");
}
}