Regular Expression正则表达式(处理文本)

Regular Expression正则表达式(处理文本)

更多了解

视频

在线生成器

常用正则表达式汇总

基础学习

使用方式

String pattern = "正则表达式";
//匹配正则表达式,如果匹配返回true,反之返回false
boolean matches = "输入判断".matches(pattern);
System.out.println(matches);

基本概念

具有一定语法的模式字符串,可以进行匹配/限制字符串格式

为什么需要正则表达式

文本的复杂处理

正则表达式的优势和用途?

一种强大而灵活的文本处理工具

大部分编程语言,数据库,文本编辑器,开发环境都支持正则表达式。

开发使用正则表达式的流程

分析所要匹配的数据,写出测试用的典型数据。

在工具软件中进行匹配测试

在程序中调用通过测试的正则表达式

正则表达式语法

普通字符

字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。

简单的转译字符(有些字符需要转译字符才可以匹配)

\n 代表换行符
\t 代表制表符
\\ 代表\本身
^ 或 \$,\或 \(,\ ) 或 \{,\} 或 ? 或 \+或 \* 或\| 或 \[,\] 匹配这些字符本身

标准的字符集合

-能够与“多种字符”匹配的表达式

-注意区分大小写,大写是取反的意思。

例如:

\D 匹配除了数字以外的所有字符(取反)

\d				匹配任意一个数字,0-9中的任意一个
\w				匹配任意一个字母或数字或下划线,也就是A-Z,a-z,0-9,_中任意一个
\s 				匹配包括空格、制表符、换行符等空白字符的其中任意一个
.   			匹配任意一个字符但是不包括换行符,如果要匹配包括"\n"在内的所有字符[\s\S]相当于\s和\S取并集

自定义字符集合

[]方括号匹配方式,能够匹配方括号中任意一个字符

例如:

[ab5@] 匹配"a"或"b"或"5"或"@"
[^abc] 匹配"a""b""c"之外的任意一个字符
[f-k]  匹配"f"-"k"之间的任意一个字母
[^A-F,0-3] 匹配"A"-"F" "0"-"3"之外的任意一个字符

⚠️注意:

正则表达式的特殊符号,被包含到中括号中,则失去了意义,除了 -,^

标准字符集合,除了小数点外,如果被包含于中括号中,自定义字符集合将包含该集合。

[\d.\-+]将匹配:数字、小数点、+、-(中括线)

量词

{n}         重复n次
{n,m}       最少重复n次,最多重复m次(包含)
{n,}        最少重复n次,最多没有上限
 ?          表示至少重复零次或者一次,相当于{0,1}
 +          表示至少重复一次,相当于{1,}
 *  				表示重复零次或者多次,相当于{0,}

⚠️注意:

匹配次数中的贪婪模式(匹配字符越多越好,默认!!)

\d{3,6} //如过有6次就匹配6次的

匹配次数中的非贪婪模式(匹配的字符越少越好,修饰匹配次数的特殊符号后再加上一个"?"号

注意:这里的问号不等同于量词的"?"

\d{3,6}? //匹配到3次的就停下了

字符边界

—本组标记匹配的是位置不是字符,符合某种条件的位置。

—\b匹配这样一个位置:前面的字符和后面的字符不全是\w

^				匹配字符串开始的地方 注意⚠️如果在[]里是取反的意思
$ 			匹配字符串结束的地方
\b			匹配一个单词边界:前面的字符和后面的字符不全是\w(\w匹配任意一个字母或数字或下划线,也就是A-Z,a-z,0-9,_中任意一个)

匹配模式

IGNORECASE 忽略大小写模式

匹配时忽略大小写

默认情况下,正则表达式是要区分大小写的

SINGLELINE单行模式

整个文本看作一个字符串,只有一个开头,一个结尾

使小数点"."可以匹配包含换行符\n在内的任意字符

MULTILINE多行模式

每行都是一个字符串,都有开头和结尾

在指定了MULTLINE之后,如果需要仅匹配字符串开始和结束位置,可以使用\A和\Z

实例运用

package com.JavaSE.day13;

/**
 * description:Java正则表达式
 * @author Administrator
 * @date 2022/3/24 16:31
 */
public class RegexDemo {
    public static void main(String[] args) {
        /**
         *  定义正则表达式
         *  ^,$
         *  +,*,?
         *  [],[^]
         *  {n},{n,},{n,m}
         *  \d,\w
         *  |
         *
         *  案例:
         *  1.QQ号码                  [0-9]{5,}                   \d{5,}
         *  2.Apple ID的密码           [A-Z][A-Za-z0-9_]{7,}       [A-Z]\w{7,}
         *  3.银行卡密码                [0-9]{6}                    \d{6}
         *
         *  4.正整数               0|[1-9][0-9]*
         *  5.正负整数             0|-?[1-9][0-9]*
         *  6.邮箱								^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$
         *  7.IP
         *  ...
         */
        //email正则表达式
        String pattern = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
        //匹配正则表达式,如果匹配返回true,反之返回false
        boolean matches = "syedu-sy@qq.com".matches(pattern);
        System.out.println(matches);
    }
}
posted @ 2022-03-24 22:34  JanoCode  阅读(55)  评论(0)    收藏  举报