java之正则表达式

来源:互联网 发布:三才图会 知乎 编辑:程序博客网 时间:2024/06/16 23:35
一、匹配字符串

     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。

    提醒:空白字符是' ', '\t', '\n', '\r', 或者'\f'。

 常用的正则表达式

正则表达式匹配事例x指定字符Xjavac匹配javac.任意单个字符javac匹配ja..c(ab|cd)ab或cdon匹配o(a|n)[abc]a、b或者cpen匹配pe[abn][^abc}除开a、b和cd任意字符sun匹配[^abc]un[a-z]a到zgod匹配go[a-d][^a-z]除开a到z的任意字符god匹配go[a-c][a-e[m-p]]a到e或者m到psun匹配su[a-b[i-o]][a-e&&[m-p]]a到e或者m到psun匹配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空白字符,等同于[\t\n\r\f]java jar匹配"java\sjar"\S非空白字符,等同于[^\t\n\r\f]java匹配"jav\S"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且小于等于mababa不匹配".{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}")

 

原创粉丝点击