正则

正则

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

将其运用到java代码中可以起到验证.查找.替换.分割的作用

正则的标识:

  • 标准标识

    ab*: a 若干个 b ->* 零个及以上 ,匹配: a ab

    abbbbb abbbbbbb 不能 bbbbb。

    (cd)*: ()->组,改变了优先级 ,若干个 cd,匹配: “” cd

    cdcd cdcdcd

    ab*(cd)*:a 若干个 b 和若干个 cd 匹配: a ab

    abbbbb abbbbbbb acd acdcd abbbbbcd abcd

    ab*|(cd)*: |或的优先级低 匹配: a ab cd

    ab|c : 匹配 ab c

  • 元字符与转义字符

    14个元字符:[ ] { } ^ $ . * + ? |

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

  • 自定义字符

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

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

    - :表示一个区间即范围

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

    \ : 转义

    . 在字符类中 不是代表任意的字符,代表自身 . 的含

    义。 如果需要表示原有的含义,挪动位置 或者加 \ 。

  • 默认|标准字符类

    在这里插入图片描述

  • 量词

    • 在匹配的过程中,需要指定次数

    在这里插入图片描述

贪婪模式:

在匹配次数不定时 如*, {n,}, +匹配字符是越多越好 你出来什么数字 他就包容什么数字

  • 贪婪模式greedy(匹配字符越多越好,可回溯)
  • ?懒惰模式 lazy reluctant(匹配字符越少越好,一旦满足条件就马上停止,可回溯)
  • +独占模式 possessive(匹配的字符越多越好,不可控,不可回溯)

阻止贪婪有两种方式

​ 1.量词后面使用?

​ 2.使用取反^

边界

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

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

$ :结束

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

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

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

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

选择符与分组

选择符

|→一旦左边的满足匹配,那么将直接跳过右边的条件(满足匹配则停止,不会查找更优方案)

he|hello →只会匹配he,不会继续进行匹配

hello|he→ 匹配he和hello

分组()

匹配 ab c -> ab|c

匹配 ab ac -> a(b|c)

只匹配 get -> \bget\b

匹配 get 和 getValue -> getvalue|get

get(value)?

获取 and or -> \band\b|\bor\b \b(and|or)\b

反向引用: \ 内部默认缓存,从第一个左括号计算,编号

为 1 开始。

非捕获组:(?:xxx)不缓存组

模式修改符

(?ism )*****(?-ism)

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

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

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

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

则表达式对大小写不敏感;(重点)

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值