• java中正则表达式


    在《java编程思想》中,java中的 \ 表示“我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。”如果想插入一个普通的反斜线,那么应该使用 \\

    理解:

    我们使用的反斜杠,就是一个

    但是在java等编程语言中,我们需要使用转义:一个文艺反斜杠 \ 表示一个普通反斜杠

    正则表达式中,反斜杠也需要转义,即 \ 表示匹配一个 ,然后蛋疼的事儿就来了,当你在 java中写 \ 时,其实正则表达式引擎只接受到了一个 ,所以,如果你想让正则表达式引擎接受两个反斜杠,那么这两个斜杠都得转义。

    于是,正则表达式匹配一个 是,应该写 \

    这时,第一个 在 java 字符串中写为 \

    第二个 在 java 字符串中写为 \

    于是,你就看到了java中无比蛋疼的 \\

    常用正则表达式:

    1、字符

    B            指定字符B

    xhh       十六进制值为0xhh的字符

    uhhhh   十六进制表示为0xhhhh的Unicode字符

               制表符Tab

              换车符

               回车

    f           换页

    e          转义(Escape)

    2、字符类

    .      任意字符

    [abc]                包含a、b 和c的任何字符(和a|b|c作用相同)

    [^abc]          除了a、b 和c之外的任何字符(否定)

    [a-zA-z]        从a到z或从A到Z的任何字符(范围)

    [abc[hij]]          任意a、h、i、和j字符(与a|b|c|h|i|j作用相同)(合并)

    [a-z&&[hij]]          任意h、i或j(交)

    s                        空白符(空格、tab、换行、换页和回车)

    S           非空白符([^s])

    d           数字[0-9]

    D           非数字[^0-9]

    w           词字符[a-zA-Z0-9]

    W                       非词字符[^w]

    3、逻辑操作符

    XY                       Y跟在X后面

    X|Y                      X或Y

    (X)                       捕获组,可以在表达式中用i表示第i个捕获组

    4、边界匹配符

    ^                         一行的起始

    $                         一行的结束

                            词的边界

    B                        非词的边界

    G                        前一个匹配的结束

    5、量词

    贪婪型                     勉强型                      占有型                     如何匹配

    X?                          X??                         X?+                        一个或零个X

    X*                          X*?                        X*+                        零个或多个X

    X+                          X+?                      X++                        一个或多个X

    X{n}                       X{n}?                    X{n}+                    恰好n次X

    X{n,}                      X{n,}?                   X{n,}+                   至少n次X

    X{n,m}                   X{n,m}?                X{n,m}+                X至少n次,且不要超过m次

  • 相关阅读:
    MIUI(Android)使用Webview上传文件
    使用EntityFramework中DbSet.Set(Type entityType)方法碰到的问题
    Web文件管理:elFinder.Net(支持FTP)
    ASP.NET 根据现有动态页面生成静态Html
    LaTeX学习
    Java Integer剖析
    20140711 loop
    20140711 eat
    20140711 set
    20140710 loop
  • 原文地址:https://www.cnblogs.com/zihaowang/p/4964376.html
Copyright © 2020-2023  润新知