正则表达式语法
-
限定符
-
选择匹配夫
-
分组组合和反向引用符
-
特殊字符
-
字符匹配符
-
定位符
注意:元字符-转义符 \\ 在 正则表达式中,两个代表一个
元字符-字符匹配符
[efgh] --- 表示 e、f、g、h中的任意一个
[^abc] --- 表示除了a、b、c中的任意一个
A-Z --- 任意单个大写字母、
a..b --- 以a开头,b结尾,中间包括2个字符的长度为4的字符串,单个点表示除\n外的任何字符
\\d{3}(\\d)? --- 包含3个或4个数字的字符串,{3}表示\\d出现3次,?表示可能为1或0
\\D(\\d)* --- 以单个非数字字符开头,后接任意个数字字符串
\\d{3}\{4} --- 以3个数字字符开头的长度为7的数字字母字符串
\\W+\\d{2} --- 以至少1个非数字字母字符开头,2个数字字符结尾的字符串
字符匹配案例
Q:匹配任意字母字符
public class TestJava { public static void main(String[] args) { String content = "a11c8"; String regStr = "[a-z]"; Pattern pattern = Pattern.compile(regStr); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到 " + matcher.group(0)); } } }
Q2:java正则表达式默认区分大小写,如何不区分大小写
(?i)abc表示abc都不区分大小写,a(?i)bc表示bc不区分大小写,a((?i)b)c表示只有b不区分大小写
Pattern pat = Pattern.complie(regEx, Pattern.CASE_INSENTIVE);也可以实现不区分大小写
public class TestJava { public static void main(String[] args) { String content = "abc8ABC23"; String regStr = "abc"; Pattern pattern = Pattern.compile(regStr, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到 " + matcher.group(0)); } } }
\\w 匹配任意英文字符、数字和下划线,相当于[a-zA-Z0-9]
\\W 与w相反
\\s 匹配任何空白字符(空格,制表符等)
\\S 匹配任何非空白字符
选择匹配符:ab|cd 表示匹配ab 或者 cd