之前很少写正则表达式,即便是要判断手机号和邮箱之类的功能也是直接copy的网上的内容,最近工作中用到正则表达式比较多,特此记录正则表达式中最常用到的忽略大小写的写法。
直接上代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String text = "Invoice No : 654321";
Pattern p = Pattern.compile("INVOICE\\s*NO?[\\pP|\\pS\\w\\s]*",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(text);
if (m.matches()) {
System.out.println("匹配上了!");
}else {
System.out.println("没匹配上");
}
}
}
运行结果:
通过百度可以得知,Pattern.CASE_INSENSITIVE的作用是启用大小写不敏感匹配,等价于修饰符(?i)。
那么也就是说还有另外一种写法:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String text = "Invoice No : 654321";
Pattern p = Pattern.compile("(?i)INVOICE\\s*NO?[\\pP|\\pS\\w\\s]*");
Matcher m = p.matcher(text);
if (m.matches()) {
System.out.println("匹配上了!");
}else {
System.out.println("没匹配上");
}
}
}
运行结果:
最后,会利用正则表达式去掉多余的信息的话,简直就太方便了:
public class Test {
public static void main(String[] args) {
String text = "Invoice No : 654321";
text = text.replaceAll("(?i)INVOICE\\s*NO?[\\pP|\\pS\\s]*", "");
System.out.println(text);
}
}
运行结果: