正则表达式


正则表达式是描述一组字符串特征的模式,用来匹配特定的字符串。
各种程序设计语言,各种编辑器大都支持正则表达式。

从在线测试开始

首先介绍一下regexpal网站,在浏览器地址栏输入:https://www.regexpal.com/,即可看到如下图所示的网站页面。
regexpal网站页面中,上边写正则表达式,下边写要尝试的例子,通过例子进行测试,检验正则表达式是否匹配。
也可以使用regexr,在浏览器器地址栏输入:https://regexr.com/,即可进入网站页面,如下图所示:
regexr页面其功能都类似,进行正则表达式的测试。
类似的网站还有很多,可以通过百度搜索。

基本用法

用字符组来匹配数字

方括号[]中的内容称为字符组,有时也叫字符集,例如:[0-9]表示“匹配0到9范围内的任意数字”,[a-z]表示“匹配任意小写字母”,同样地,[A-Z]表示“匹配任意大写字母”,当然,也可以采用穷举法,[abc123ABC]表示“匹配这里的任意字符”,之外的字符不匹配,如d就不匹配。
[aeiou]匹配小写元音字母
[^aeiou]不匹配小写元音字母
[\u0067]匹配Unicode字符
[\115]用八进制数匹配字符

使用字符组简写形式

\d像[0-9]一样匹配任意数字
\D匹配非数字字符,与[^0-9\]或[^\d]等效
\w匹配所有的单词字符(前提是勾选global选项),与[_a-zA-Z0-9]等效;与\D的区别是\D会匹配空格、标点符号等字符,\w则不会
\W匹配空格、标点符号以及其他非字母、非数字字符,与[^_a-zA-Z0-9]等效
\a报警符
\0空字符
\s匹配空白符(空格)
\S非空白符(空格)
\t制表符
\n换行符
\r回车符
\f换页符
\b单词边界
\B非单词边界

匹配任意字符

.(点)是一个通配符,可以匹配任意字符(但一般不匹配行起始符)

选择操作

选择操作可在多个可选模式中匹配一个。
(the|The|THE)匹配所有的the、The、THE

分组

()之间的内容就是一个分组

捕获分组

\1或$1引用第一个捕获的分组

非捕获分组

不想引用分组时,就可以定义非捕获分组。
(?:the|The),这样,当你使用$1引用时,就无效

选项

选项描述支持平台
(?d)Unix中的行Java
(?i)不区分大小写PCRE、Perl、Java
(?J)允许重复的名字PCRE
(?m)多行PCRE、Perl、Java
(?s)单行(dotall)PCRE、Perl、Java
(?u)UnicodeJava
(?U)默认最短匹配PCRE
(?x)忽略空格和注释PCRE、Perl、Java
(?-…)复原或关闭选项PCRE

(?i)the匹配所有的the,不区分大小写

子模式

子模式就是指分组中的一个或多个分组,就是模式中的模式。多数情况下,子模式中的条件能得到匹配的前提是前面的模式得到匹配,但也有例外。
(t|T)h(e|eir)匹配the、The、their、Their,后面的匹配,依赖前面的匹配

量词

{}中的数字表示待查找字符出现的次数,包含数字的花括号是一种量词
{3,4}3表示最小数量,4表示最大数量
?表示“零个或一个”
+表示“一个或多个”
*表示“零个或多个”
{n}精确匹配n次
{n,}匹配n次或更多次
{m,n}匹配m至n次
{0,1}与?相同
{1,}与+相同
{0,}与*相同

边界

^匹配行或字符串的起始
$匹配行或字符串的结尾
\b单词边界,有的应用中使用\<\>来指定单词的开头和结尾
\B非单词边界

使用元字符的字面值

\Q\E之间的字符集匹配字符串字面值,例如:\Q.\E表示.(点),不再匹配任意字符了。

匹配行

.*.+匹配一行内容,如果是global的话,将匹配所有行

更进一步

正则表达式非常灵活,基本规则有限,至于你能不能挖掘出其独特的应用,就看你的实践了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值