美文网首页程序员
正则表达式梳理

正则表达式梳理

作者: yoomaz | 来源:发表于2018-10-31 14:48 被阅读6次

    ## 正则表达式

    ### 次数匹配

    1. **+** : 一次或者多次

    2. *:零次或者多次

    3. ?:零次或者一次

    4. {n,m}:最少 n 次,最多 m 次

    5. {n,}:最少n次

    6. {,m}:最多m次

    ### 特殊匹配元素

    主要是代表一些特性的元素

    1. . :代表除了换行之外的任意字符,例如 `.*` 匹配任意多个字符

    2. \d : 代表任何一个数字,例如匹配一个座机号:`0\d{2}-\d{7}`

    3. \w : 匹配字母或数字或下划线,等价于 [A-Za-z0-9_],不能匹配汉字

    4. \D:匹配任意非数字的字符

    5. [ ] : 字符集合,范围匹配,

      + [0-9] 代表数字 0-9的任何一个数字

      + [abc] 代表字母 abc 中的一个字符

      + [a-z] 代表字母 abc...z 中的一个字符

      + [!?] 代表符号 !? 中的一个符号

      + [A-Za-z0-9] 可以把所有字符拼接起来供选择,中间不带空格

    ### 特殊字符

    1. ^ :反义符号;也代表一个字符串的开始

      + [^abcd] : 除了abcd的字符

    2. $: 代表一个字符串的结束

    3. | : 分歧条件,相当于或者, `\d{2}|\d{3}` 两个数字或者三个数字

    4. ( ) : 分组,把括号里的内容当做一个整体

    5. \ : 转义,对特殊字符需要进行转义,例如匹配 sno*w, 需要正则 `sno\*w`

    ### 练习

    1. 只包含(中文,大小写字符,数字)的字符串,长度为 1 到 8

      `^[\u4e00-\u9fa5a-zA-Z0-9]{1,8}$`

    2. 获取 Url 中的参数, url = webApp/users/buyerOrders/orderInfo/1803271202gqo6a7tosn7e

      ```

          private static void test20() {

              System.out.println("------------test20()------------------");

              // 订单详情

              String url = "webApp/users/buyerOrders/orderInfo/1803271202gqo6a7tosn7e";

              String pattern = "webApp/users/buyerOrders/orderInfo/(.*)";

              Pattern pt = Pattern.compile(pattern);

              Matcher matcher = pt.matcher(url);

              if (matcher.find()) {

                  System.out.println("uri:" + matcher.group(1));

              }

          }

      ```

    相关文章

      网友评论

        本文标题:正则表达式梳理

        本文链接:https://www.haomeiwen.com/subject/eeabzttx.html