正则表达式

什么是正则表达式

        正则表达式是用来描述具有一定特征的字符串的特殊字符串。

作用:

        验证、查找、替换、分割 。

普通字符

        写什么,匹配什么

        非特殊含义以外的字符,如 a b 中国 。 普通字符精确匹配

元字符与转义

        元字符:[] {} () \ ^ $ .* + ? | →

        转义字符:\+字母  \d[0-9]   \\: \  \s:空白符  \w:字母数字

自定义字符

        由 [] 组,只匹配一个, 需要注意以下四个:

        ^ : 如果在第一个位置,表示取反的含义。

        - :表示一个区间即范围

        ] : 最近一个位置为:结束 ,如果要表示普通的]请加 \

        \ : 转义

        . 在字符类中 不是代表任意的字符,代表自身 . 的含义。 如果需要表示原有的含义,挪动位置 或者加 \ 。

标准字符类

        \d  digit[0-9] , [0123456789]

        \w  word [A-Za-z0-9]

        \s  space 空格,制表符,换行符

        . :多行模式(缺省):除了换行符\r\n以外的任意一个字符, [^\n\r] ;单行模式:可以匹配                 包含换行符在内的任意一个字符

        \D  [^\d][^0123456789][^0-9]

        \W  [^\w] 非字母, 数字, _, 即空白,标点符号及中文

        \S  [^\s]

量词  匹配的过程中,需要指定次数

        *:0个及以上      +:一个及以上      ?:0或1个

        {n}:n次,非负数      {n,}:大于等于n次      {n,m}:大于等于n次小于等于m次

贪婪模式

        在匹配次数不定时如 *, {n,}, + 匹配字符越多越好,默认模式即”贪婪模式”

        贪婪模式 greedy(匹配字符越多越好,可回溯)

        ? 懒惰模式 lazy reluctant (匹配字符越少越好,可回溯)

        + 独占模式 possessive(匹配字符越多越好,不可回溯) 用的较少

阻止贪婪有两种方式

        1、 量词后面使用 ?

        2、 使用取反

边界

1)、边界不占用宽度,只是一个界限

2)、 ^ :开始 \b :单词边界 \B :非单词边界 $ :结束

        ^ :多行代表每行头 单行代表整个字符串的开始

        $ : 多行代表每行尾 单行代表字符串的结尾

        \b : 匹配前面或后面的不是\w

        \B : 匹配前面或后面的是\w

选择符|

        | ->优先级低 ,满足匹配则停止,不会查找更优的方案

        he|hello –>只匹配 he,不匹配 hello

        hello|he->匹配 he 与 hello

模式修改符

        (?ism )*****

        (?-ism)

                i : insensitive 使正则表达式对大小写不敏感;(重点)

                s : singleline 开启“单行模式”,即点号“.”匹配新行符;

                m : multiline 开启“多行模式”,即“^”和“$”匹配新行符的前面和后面的位置

        (?i)select(?-i) -> 不区分大小写。

零宽断言

前瞻(Lookahead) 后顾(Lookbehind)

        (?=exp)   先行断言   断言自身出现的位置的后面能匹配表达式exp

        (?<=exp>)  后发断言  断言自身出现的位置的前面能匹配表达式exp

        (?!exp)  断言此位置的后面不能匹配表达式exp

        (?<!Exp) 断言此位置的前面不能匹配表达式

常用类

        java.util.regex Pattern Matcher String

        一般在查找、替换、分割、组的使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值