Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。下面来通过具体例子了解一下:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo { public static void main(String[] args) { String string = "1983-07-27"; String patString = "\\d{4}-\\d{2}\\d{2}"; Pattern pattern = Pattern.compile(patString); Matcher matcher = pattern.matcher(string); if (matcher.matches()) { System.out.println("日期格式合法!"); } else { System.out.println("日期格式不合法!"); } } }
当然也可以通过使用Pattern类,对一个字符串进行拆分工作,这个在一般的机试中经常会考到:
import java.util.regex.Pattern; public class RegexDemo01 { public static void main(String[] args) { String string = "A1B22C333D4444E55555F"; String patString = "\\d+";//定义拆分规则,因为字符串中数字个数不一样,所以这里用到\d+表示1位或者多位数字都可以。 Pattern pattern = Pattern.compile(patString);//实例化Pattern类 String[] strings=pattern.split(string); for (int i = 0; i < strings.length; i++) { System.out.print(strings[i]+"\t"); } } }
运行如下:A B C D E F
了解了匹配和拆分工作,下面看一下Matcher类的替换操作:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo01 { public static void main(String[] args) { String string = "A1B22C333D4444E55555F"; String patString = "\\d+";// 定义拆分规则 Pattern pattern = Pattern.compile(patString);// 实例化Pattern类 Matcher matcher = pattern.matcher(string); String newString = matcher.replaceAll("_"); System.out.println(newString); } }
运行实例:A_B_C_D_E_F
其实String类也对正则表达式有支持,String类中有三个方法支持正则操作:
1.public boolean matches(String regex) 字符串匹配;
2.public String replaceAll(String regex,String replacement) 字符串替换;
3.public String[] split(String regex) 字符串拆分;
下面通过一个例子来看一看怎么用:
public class RegexDemo01 { public static void main(String[] args) { String string1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "--"); boolean temp = "1983-01-01".matches("\\d{4}-\\d{2}-\\d{2}"); String[] strings = "A1B22C333D4444E55555F".split("\\d+"); System.out.println(string1); System.out.println(temp); for (String string : strings) { System.out.print(string + "\t"); } } }
运行实例:
A--B--C--D--E--F
true
A B C D E F
可以发现以上程序运行结果和以前是一样的,所以在此建议读者以后最好直接在String类中的方法,这样比较方便。
喜欢的童鞋可以关注我
时间: 2024-10-08 16:48:00