正则表达式

目录

正则元字符

正则:普通字符

正则:\d

正则:\D

正则:\w

正则:\W 

正则:\s 

正则:\S 

正则:. 

正则:|  

正则:[ ] 

正则:[^abc] 

正则:[a-z] 

正则:[^a-z]

正则:\num

正则:?

正则:+ 

正则:{n}

正则:*

正则:$

正则:^


正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sedgrep)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。

正则元字符

正则:普通字符

当我们的正则表达式为一串普通字符(不包含元字符)时,校验字符串只有和正则一致时,才会校验通过。

正则:\d

\d 表示一个数字。

如:

a\d: 表示验证的字符串后面必须以 a 开头,且以一个数字结尾。

 a\db:a和b中间有一个数字

a\d\d:a后面跟2个数字

 注意:在Java定义的正则里,由于一个\表示的是字符串转义,因此在Java定义带有\的元字符时,还需要多写一个\,即\\

如:

package Regex;

import java.util.regex.Pattern;

/**
 * @Author ztc
 * Date on 2022/12/13  14:36
 */

public class RegexTest {

    public static final String regex = "a\\d\\d";

    public static void main(String[] args) {
        System.out.println("正则表达式:" + regex);
        checkRegex("aa1");
        checkRegex("aabb1");
        checkRegex("a11");
    }

    private static void checkRegex(String input){
        boolean result = Pattern.matches(regex, input);
        System.out.println(input + ":" + result);
    }
}

正则:\D

\D 表示一个非数字,它和上面 \d 的意思恰好相反。

如:

\D\D\D\D: 则表示一个长度为4,不包含数字的字符串。

正则:\w

Matches any letter, digit or underscore. Equivalent to [a-zA-Z0-9_].

表示一个字母(大小写均可)、数字,或下划线

正则:\W 

Matches anything other than a letter, digit or underscore. Equivalent to [^a-zA-Z0-9_]

\W 与 \w 相反,表示这个位置的字符既不是字母、数字,也不是下划线。

也就是:特殊符号(除下划线),或者空格等满足。

正则:\s 

匹配空格、制表符和换行符等空白字符。

正则:\S 

匹配除空格、制表符和换行符以外的字符。

正则:. 

正则:|  

| (竖线) 则表示或的关系,表示检测的字符串须满足其中一个时,才符合条件。

如:aa|bb|cc:则表示输入的字符串须是aa,或bb,或cc其中的一个

 注意,如果我们或者关系的前后还有其它字符时,需要用()将他们包裹起来。

正则:[ ] 

[ ] 表示匹配其中任意一个字符。

如: 

a[bcd]e:则表示a和e的中间须是b,或c,或d其中的一个

正则:[^abc] 

[^ ] 表示不与中括号里的任意字符匹配。

如: 

a[^bcd]e:则表示a和e的中间除b,c,d这三个字符外,其他的字符都满足。

正则:[a-z] 

[值1-值2] 则表示值1到值2中间的所有字符都满足(包括值1和值2)。常用该正则来表示大小写字母范围,数字范围。

如:

a[b-d]e:等同于 a[bcd]e,因为 b-d 其实就是b,c,d三个数

a[0-9]e:则表示a和e中间是一个数字 

正则:[^a-z]

匹配不在a到z范围内的任意字符。

正则:\num

这里的num指number,也就是数字,当\后面跟数字,表示匹配第几个括号中的结果。

比如:现在有 abcd 字符串,当我们用小括号把 c 包裹起来后,然后在字符串后面写上 \1,即 ab(c)d\1,则这里的 \1 就指 c,因为 \1 表示第1个小括号中的结果。

ab(c)d\1:等同于 abcdc 。

正则:?

? 表示匹配前面的子表达式零次或一次。

如:

abc?de: 表示可匹配的字符串为 abde (匹配0次c) 或 abcde (匹配1次c)。

正则:+ 

匹配前面的子表达式一次或多次 (次数 >= 1,即至少1次)

abc+de:ab 和 de 之前至少有一个 c 。

正则:{n}

这里的 n 是一个非负整数。匹配确定的前面的子表达式 次。

如:

a{3}

匹配三个连续的"a"字符

a{3,}

匹配三个以上连续的"a"字符。

a{3,6}

匹配三到六个连续的"a"字符。

正则:*

a*

匹配零个以上连续的"a"字符。

正则:$

匹配文本末尾的位置(不占用字符)。多行模式下亦匹配换行符前的位置,即行尾。

正则:^

匹配字符串的开头而不使用任何字符。如果使用/m多行模式,这也将在换行符之后立即匹配。 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java码蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值