一、匹配字符串
String类的matchs方法用的是正则表达式匹配,matchs方法与equals类似。
"javac".matchs("javac");
"javac".equals("javac");
结果都为true。
match方法更强大,不仅能匹配固定字符串,还能匹配具有相同规律的的字符串。
”javac jar".macths("javac.*");
”javac jar javac".macths("javac.*");
”javac jar java".macths("javac.*");
字符串.*匹配任何0个或者多个字符。
二、正则表达式的语法
正则表达式由字面字符和特殊字符组成。特殊字符(、)、[和]。
注意:反斜杠是一个特殊字符,在字符串中开始转义序列。所以java中需要使用\d来代表d。
提醒:空白字符是' ', ' ', ' ', ' ', 或者'f'。
常用的正则表达式
正则表达式 匹配 事例 x 指定字符X javac匹配javac . 任意单个字符 javac匹配ja..c (ab|cd) ab或cd on匹配o(a|n) [abc] a、b或者c pen匹配pe[abn] [^abc} 除开a、b和cd任意字符 sun匹配[^abc]un [a-z] a到z god匹配go[a-d] [^a-z] 除开a到z的任意字符 god匹配go[a-c] [a-e[m-p]] a到e或者m到p sun匹配su[a-b[i-o]] [a-e&&[m-p]] a到e或者m到p sun匹配su[a-o&&[i-o]] d 数字字符,等同于[0-9] java8匹配"java[\d]" D 非数字字符,等同于[^0-9] java匹配"jav[\D]" w 单词字符,等同于[a-zA-Z0-9_] java匹配"jav\w" W 非单词字符,等同于[^a-zA-Z0-9_] java8匹配"java\W" s 空白字符,等同于[ f] java jar匹配"javasjar" S 非空白字符,等同于[^ f] java匹配"javS" p* 模式p的0或多次出现 abab匹配"(ab)*" p+ 模式p的1或多次出现 aba匹配"a+ba" p{n} 模式p的n次出现 abab不匹配".{2}" p{n, } 模式p的至少n次出现 abab匹配".{2,}" p{n,m} 模式p出现的次数大于等于n且小于等于m ababa不匹配".{2,4}" p? 模式p的0或1次出现 abab不匹配".?"
注意:单词字符是任意的字母、数字或者下划线字符。
w等同于[a-z[A-Z][0-9]_]或者化简为[a-zA-Z0-9_]。
W等同于[^a-zA-Z0-9_]。
以斜杠开头的正则表达式必须加中括号[]。
例如:"11-22-33".matchs("[\w]{2}-[\w]{2}-[\w]{2}"); 结果为true
"111-22-33".matchs("[\w]{2}-[\w]{2}-[\w]{2}"); 结果为false
量词符*、+、?、{n}、{n, }、{n,m}
*等同于{0,},+等同于{1,},?等同于{0,2}
警告:不要在重复量词符中使用空白,例如Z{2,4}不能在逗号后面有空白符的Z{2, 4}。
可以使用括号对模式进行分组。例如:(ab){3}匹配ababab,但是ab{3}匹配abbb。
小括号符和中括号符都是特殊字符,如果小括号符要表示其字面意思,则必须写成"\(","\)"。
例如:"(xxx)xxx-xxx".matchs("\(x{3}\)x{3}-x{3}")