正则表达式

"本文详细介绍了正则表达式的概念及其使用,包括+、*、?限定符,[]和[^]字符集,以及.、w、s等特殊字符的含义。同时讲解了()的选择和预查功能,以及在实际匹配中的应用。通过实例展示了正则表达式在字符串处理中的强大功能。"
摘要由CSDN通过智能技术生成

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

jinnan+o
可以匹配jinnano 或者jinnannano 或者 jinnannanjinnanjino

+号代表前面的字符至少出现一次

jinnan * o
代表前面的字符可以不出现,或一次,或多次

可能会出现 jino jinnano jinnanooooo

+与* 的区别就在于前者是+号之前的全部字符需要完整的出现一次才可以,后者只要有前面的字符出现就行,不一定完整

jinna?n 可以匹配 jinnan jinan
?代表前面的字符最多只能出现一次
像jinna? 最多出现2个n、1个j、1个i、1个a。

普通字符

**[ABC] 匹配[…]里的所偶字符
[jin]
jinnan
匹配jin字符

[ ^ABC]匹配除了[…]里的所有内容
[jin]
jinnan
匹配nan字符

[A-Z]表示一个区间,匹配所有大写字母,[a-z]表示所有小写字母
[A-Z]
JinNan
匹配JN

**[a-z]
JinNan
匹配inan

. 匹配除换行符(/n /r)之外的任何单个字符,相当于[ ^/n/r]

[ \s\S] 匹配所有。

\s 是匹配所有空白符,包括换行
\S 非空白符,不包括换行

\w 匹配字母、数字、下划线
等价于[A-Za-z0-9_]

非打印字符

\x0是一个字符,\代表转义,x0代表这是一个16进制数,

\cx

匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。

\f 匹配一个换页符
等价于\x0c 和\cL

\ x0c 是一个 表单Feed ;它迫使打印机移动到下一张纸

\n 匹配一个换行符
等价于\x0a 和\cJ

\r 匹配一个回车符
等价于\x0d 和\cM

\s 匹配任何空白字符,包括空格,制表符,换页符等等。
等价于[ \f\n\r\t\v]

\S 匹配任何非空白字符
等价于[ ^ \f\n\r\t\v]

\t 匹配一个制表符
等价于 \x09 和\cl

\v 匹配一个垂直制表符
等价于\x0b 和\cK

特殊字符

要匹配特殊字符,前面要加\
例如
** \[
\.
\?**

限定符

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。

'表示前面的子表达式零次或者多次*

jinnan* 能匹配j 以及jin

+表示前面匹配的子表
达式一次或者多次

jinnan+ 能匹配jinnannan jinnanjin
但是不能匹配jinna
少一个字符都不行

?表示前面的子表达式零次或者一次
例如
jin(nan)?
可以匹配jin
可以匹配jinnan中的jinnan
可以匹配jinsile中的jin

{n} n是一个非负整数,匹配确定的n次

例如n{3}不能匹配jin
但是可以匹配jinnan
代表n要出现3次,也只能是3次

{n,} n是一个非负整数,至少匹配n次

例如n{3}不能匹配jin
但是可以匹配jinnan,或者jinnannnnnnnn

{n,m} nm均为非负整数,其中n<=m 。最少匹配n次且最多匹配m次

例如n{3,4} 不能匹配jin
但是可以匹配jinnanjinnann,或者匹配jinnnan

选择

用圆括号()将所有选择项括起来,相邻的选择项之间用|分割。
()表示捕获分组,()会把每个分组里的匹配的值保存起来,多个匹配值可以通过数字n来查看(n是一个数字,表示第n个捕获的内容)

([1-9])([a-z]+)
匹配以一个数字开头多个字母结尾

例如123456jinnan123jinnan456
匹配
6jinnan3jinnan

但是圆括号的相关匹配会被缓存,此时可用?:
放在第一个选项前来消除这种副作用。

?:、?=、?! 这三个是非捕获元
后两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。

特殊用法:
A(?!B)
查找后面不是B的A

(?<=B)A
查找B后面的A

A(?=B)
查找B前面的A

(?<! B)A
查找前面不是B的A

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乃雯

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

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

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

打赏作者

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

抵扣说明:

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

余额充值