一些实用的基础正则表达式

一些实用的基础正则表达式

开发工具与关键技术:VisualStudio MVC
作者:老龙
撰写时间:2019/5/8

一些实用的正则表达式基础
正则表达式是一门灵活性非常强的语言,它能查找符合某些复杂规则的字符串的需要。,正则表达式就是描述这些规则的工具,换个角度来说,正则表达式就是记录与限定文本规则的执行者。
而正则表达式也又属于它自己的一套规则,正则表达式里存在很多的字符,而操作者就是根据这些字符的定义将他们组合起来实现一些特定字符的查找与限制。下面的几类字符是正则表达式中必不可少的一些基本字符。
一、 元字符
首先是较为基本的,在正则表达式里它是一个转义字符。当\与其他的字符连接起来后就形成了一些新的字符。比如\w代表的是匹配除换行符以外的任意字符。\s匹配任意的空白字符;\d匹配数字;\b匹配单词的开始或结束;如果说\b是一个整体的话,^和KaTeX parse error: Expected 'EOF', got '\b' at position 4: 就是将\̲b̲的功能拆成了两个部分。^用于查…。而有些不属于数字、字母或汉字的字符,例如*的获取就需要用到\,写法为*。因为通过其他的字符获取时他们会被解释成其他的意思。如果想要获取\的本身,那也得用\。
在这里插入图片描述
二、 限定重复
当匹配字母time时的写法为\b\time\b,若在time的后面再匹配4位数,比如匹配time2019,就用到下面的语法,这时的写法为\time\d{4},{}代表的就是重复4位数字
下面时一些重复的例子:
在这里插入图片描述
iPhone\d+匹配iPhone后面跟1位数字或者更多的数字。
44098\d{10,13}匹配44098后面跟10到13位数字(身份证号)

在写正则表达式的过程中很容易犯错,而我们又不可能每次都是看代码的效果来检验代码是否正确,这时候我们就需要一个检验正则表达式是否正确的工具,比如RegexBuddy4。这是一个比较好的检验的工具,满足正则的所有写法。比如我们想要在一堆的字母和数字里匹配出Love。
在这里插入图片描述
三、 限定字符类
当匹配一个集合,特定的集合时用其他的字符实现起来就比较麻烦,所以在正则中就设置了一个[]字符,它能匹配出预定义的字符集合。比如在一个字符段里只匹配LMNOPQ,那么我们就可以用[]把他们给括起来,像[LMNOPQ]{3}它所代表的就是只匹配LMNOQ中的三个字母。也可以使用它指定一个字符的范围,比如[0-9]代表的含义与\d就是完全一致的。

四、 反义字符
因为使用字符时需要查找除了某些字符意外的字符,比如查找除了英文字符以外的字符,那就需要用到反义字符。
在这里插入图片描述
例如:face[^s]匹配以face开头,后面不能是s以外的任意字符。
\D+匹配的是除了数字以外的任意字符。

五、 替换
在匹配的很多时候,在某一段字符串里有几种匹配的结果是我们所需要的,而这种情况我们就要用到正则表达式里的替换规则。如果满足任何一种规则都应该当成是匹配的结果。具体的使用方法是用|将不同的规则分隔开,下面举一些例子。
www.\baidu.\com|www.youdao.com这个表达式匹配的是字符串中名字为www.baidu.com或者名字为www.youdao.com的字符。当然你也可以继续用|在正则里面继续拼接匹配规则,因为它不仅仅能用于两种规则,也能用于更多的规则。
六、 零宽断言
这个语法可以指定从某个字符的位置开始匹配,可以准确地匹配出想要的字段信息,exp代表的是你要输入的内容,可以是abcde,也可以是12345。可以是任何的字符组合,并不是特定的字符
在这里插入图片描述
用(?<=exp)和(?=exp)用来举个例子。在一段This is a fierce lion?的字符串中(?<=a).+?(?=\。.+?/>)这个正则表达式匹配的是a后面,?之前的字符。那么匹配的结果为fierce lion

七、 贪婪与懒惰
当正则表达式中包含能接受重复的限定符时,它通常会尽可能地匹配更多的字符。例如在一段为a beautiful girl的字符里a.l匹配的就是a beautiful girl而不是a beautiful这就是正则表达式中的贪婪匹配。
而有时候我们需要的确是懒惰匹配,也就是需要匹配出尽可能少的字符。例如上面我们需要匹配出的是a beautiful那么它的写法应该为a.
?l应该为什么匹配出的是a beautiful而不是autiful呢?因为正则表达式有另外一条规则,比如懒惰/贪婪的优先级更高:最开始的匹配最有最大的优先权。
在这里插入图片描述
最后是一些常见的正则表达式:
[\u4e00-\u9fa5] 匹配中文字符的正则表达式
\n[\s| ]*\r 匹配空行的正则表达式
1+ &quot; / / 由 26 个 英 文 字 母 组 成 的 字 符 串 &quot; [ A − Z ] + &quot; //由26个英文字母组成的字符串 &quot;^[A-Z]+ "//26"[AZ]+" //由26个英文字母的大写组成的字符串
2+ &quot; / / 由 26 个 英 文 字 母 的 小 写 组 成 的 字 符 串 &quot; [ A − Z a − z 0 − 9 ] + &quot; //由26个英文字母的小写组成的字符串 &quot;^[A-Za-z0-9]+ "//26"[AZaz09]+” //由数字和26个英文字母组成的字符串
“^\w+$” //由数字、26个英文字母或者下划线组成的字符串


  1. A-Za-z ↩︎

  2. a-z ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值