轻松学会正则表达式(标题狗)

正则表达式

概念

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

符串。Regular Expression。

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

作用

验证、查找、替换、分割

匹配规则

1. 特殊字符转义

\d:0-9数字,使用时\要加一个\转义 \d

\w: 26字母大小写,0-9数字 \w

^ 开始标志

$ 结束标志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V5THaOnX-1603278853829)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021172825206.png)]

2.自定义

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

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

​ -:表示一个区间即范围

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

​ \ : 转义

[ae134] -> a e 1 3 4 

[(as)] ->a s ( ) 

[a-z] ->小写字母 

[-\]a-z\[] -> -[] 及小写字母

3.默认|标准字符类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7e9vdN5f-1603278853832)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021173546907.png)]

h[ea]llo –>hello hallo 

h(e|a)llo ->hello hallo 

[\-\\abc] -> - \ a b c 

\d\s ->一个数字和一个空白 

[\d\s] –> 数字 或 空白

3. 量词

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZzmzZYUp-1603278853834)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021185857923.png)]

co*ke –> 不限个数的 O 

co+ke –>至少一个 O 

co?ke ->1 个或零个 O 

co{0}ke ->0 个 

co{5,}ke –>5 次及以上 

co{5,8}ke –> 至少 5 次,最多 8 次 

[1-9]\d{3} –>大于等于 1000 小于等于 9999 的数 

[1-9]\d{2,4} –>大于等于 100 小于等于 99999 的数 

1[34578]\d{9} : 匹配手机号 

<[a-zA-Z]+\d?> ->网页标签 

<[A-Za-z][A-Za-z0-9]*> ->网页标签

4. 贪婪模式

在匹配次数不定时如 *, {n,}, + 匹配字符越多越好,

默认模式即”贪婪模 ”

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

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

溯)

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

用的较少 cokecolacoooooooooooooke

.*o –>贪婪模式 
.{2,}o–>贪婪模式 
.{2,}?o –>懒惰模式 
.{2,}+o –>独占模式,不可回溯 没有匹配到内容。 
<.+?> ->找出标签 不要标签内的内容。不是
<.+> <[^>]+>->找出标签 不要标签内的内容。不是<.+>

5.边界

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

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

$ :结束

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

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

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

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

查找开头的 hello -> ^hello 找出 独立的单词 world -> \bworld\b 查找结尾的 world -> world$

常用类

java.util.regex Pattern Matcher String

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tm2VQRJQ-1603278853837)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021190732463.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESmYp9td-1603278853840)(C:\Users\lwf\AppData\Roaming\Typora\typora-user-images\image-20201021190805375.png)]

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author lwf
 * @title: Demo1
 * @projectName 10_21Code
 * @description: TODO
 * @date 2020/10/2116:03
 */
public class Demo1 {
    public static void main(String[] args) {
        String str1="127.124.235.001";
        //简单匹配检查ip
        System.out.println(str1.matches("\\d{1,3}(.\\d{1,3}){3}"));
        //0-255  ([01]\\d{2})|2([0-4]\\d)|25[0-5]      (([01]\d{2})|2([0-4]\d)|25[0-5])(.(([01]\d{2})|2([0-4]\d)|25[0-5])){3}
        //只能匹配 0-255.0-255.0-255.0-255   且127.0.0.1必须写成127.000.000.001不然无法识别
        System.out.println(str1.matches("(([01]\\d{2})|2([0-4]\\d)|25[0-5])(.(([01]\\d{2})|2([0-4]\\d)|25[0-5])){3}"));
        //Pattern ,Matcher 匹配字符串
        //Pattern 调用compile()方法传入正则表达式
        //获取到的Pattern对象调用matcher()传入要分析的字符串
        //调用get()方法获取是否匹配,参数表示从哪个索引开始查找默认0
        String str2="江西上饶beautiful";
        Pattern p=Pattern.compile("上");
        Matcher matcher=p.matcher(str2);
        System.out.println(matcher.find(2));

    }
}

从哪个索引开始查找默认0
String str2=“江西上饶beautiful”;
Pattern p=Pattern.compile(“上”);
Matcher matcher=p.matcher(str2);
System.out.println(matcher.find(2));

}

}


©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页