正则表达式基础

《正则表达式必知必会》

正则表达式是一些用来匹配和处理文本的字符串

有句话希望牢牢记住:把必须匹配的情况考虑周全并写出一个匹配结果符合预期的正则表达式很容易,但把不需要匹配的情况也考虑周全并确保它们都将被排除在匹配结果以外往往要困难得多。逻辑思维能力

(语法是正则表达式最容易掌握的部分,真正的挑战是学会如何运用那些语法把实际问题分解为一系列正则表达式并最终解决。)

基本用途

搜索和替换

元字符

有特殊含义的特殊字符

字符功能
.可以匹配任何一个单个的字符
\转义
[]匹配多个字符中的某一个
-连字符,只用在[]之间,否则就是一个普通字符
^取非匹配()
+匹配一个或多个字符
*匹配零个或多个字符
?匹配零个或一个字符
{}匹配的重复次数

{}的用法详解:

  • 为重复匹配次数设定一个精确的值:{3}
  • 为重复匹配次数设定一个区间:{2,4}
  • 匹配至少重复多少次:{3,}

防止过度匹配

*+都是所谓的“贪婪型”元字符,它们在进行匹配时的行为模式是多多益善而不是适可而止的。它们会尽可能地从一段文本的开头一直匹配到这段文本的末尾,而不是从这段文本的开头匹配到碰到的第一个匹配为止。

常用的贪婪型元字符和它们的懒惰型版本:

贪婪型元字符懒惰型元字符
**?
++?
{n, }{n, }?

空白元字符

元字符说明
[\b]回退(并删除一个字符)(Backspace键)
\f换页符
\n换行符
\r回车符
\t制表符(Tab键)
\v垂直制表符

匹配指定的字符类别

元字符说明
\d任何一个数字字符(等价于[0-9])
\D任何一个非数字字符(等价于[^0-9])
\w任何一个字母数字字符(大小写均可)或下划线字符(等价于[a-zA-Z0-9_])
\W任何一个非字母数字或非下划线字符(等价于[^a-zA-Z0-9_])
\s任何一个空白字符(等价于[\f\n\r\t\v])
\S任何一个非空白字符(等价于[^\f\n\r\t\v])

POSIX字符类

字符类说明
[:alnum:]任何一个字母或数字(等价于[a-zA-Z0-9])
[:alpha:]任何一个字母(等价于[a-zA-Z])
[:blank:]空格或制表符(等价于[\t])
[:cntrl:]ASCII控制字符(ASCII0-31再加上ASCII127)
[:digit:]任何一个数字(等价于[0-9])
[:graph:]和[:print:]一样,但不包括空格
[:lower:]任何一个小写字母(等价于[a-z])
[:print:]任何一个可打印字符
[:punct:]既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符
[:space:]任何一个空白字符,包括空格(等价于[^\f\n\r\t\v])
[:upper:]任何一个大写字母(等价于[A-Z])
[:xdigit:]任何一个十六进制数字(等价于[a-fA-F0-9])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值