首先定义两个字符串:
String str;
String regex;
其中str是要作判断的字符串;regex是一个标准的正则表达式,当然,它也是一个字符串。
一般的,如果想判断一个字符串是否匹配一个正则表达式,可以这样做:
str = "string";
regex = "s.*";
System.out.println(str.matches(regex));
matches的返回值是一个布尔boolean值。
还可以这样用:
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.matches());
matches的返回值同样是一个布尔boolean值。
下面的情况也许并不是你想要的结果:
str = "string\nstring";
regex = "s.*";
System.out.println(str.matches(regex));
结果是false。
这里的点.并没有匹配行结束符\n。
也许你希望用一个含有表示行结束符的正则表达式来做匹配,但是,你又知道字符串中有多少个行结束符以及它们的位置呢?
其实,.的匹配规则是可以更改的:
int flags = Pattern.DOTALL;
Pattern pMulti = Pattern.compile(regex, flags);
Matcher mMulti = pMulti.matcher(str);
System.out.println(mMulti.matches());
正如所料,结果是true。
也可以指点过多个标志:
flags = Pattern.DOTALL | Pattern.MULTILINE;
各个标志之间只需要用数线|分隔即可。
更多的知识,请参照JDK的java.util.regex.Pattern部分的说明,很详细。