正则表达式入门之重复匹配
来源:互联网 发布:java云计算框架 编辑:程序博客网 时间:2024/06/06 07:48
正则表达式-重复匹配
1.重复匹配
1.1匹配一个或多个字符
要想匹配同一个字符(或字符集合)的多次重复,只要简单地给这个字符(或字符集合)加上一个+字符作为后缀就行了。+匹配一个或多个字符(至少一个:不匹配0个字符的情况)。
例1
比如我想匹配文本里所有的邮箱
#文本
#文本Send e-mail to Tom and Ada, their mailbox is 1944786548@qq.com and .18755518273@163.com, don't forget, Green's mailbox is green.sun@126.com, and finally my mailbox, ben@urgent.forta.com
#正则表达式\w+@\w+\.\w+
#结果
Send e-mail to Tom and Ada, their mailbox is 1944786548@qq.com and .18755518273@163.com,don't forget, Green's mailbox is green.sun@126.com, and finally my mailbox,ben@urgent.forta.com
正则表达式匹配了4个邮箱,但其中两个不够完整,还有一个是错误的邮箱。(邮箱地址可以有任意多个字符,但第一个字符必须是一个字母或数字字符)下面我们学习另一种元字符来完成我们的任务。
1.2匹配零个或多个字符
+匹配一个或多个字符,但不匹配0个字符,如果我们想匹配一个可有可无的字符,也就是这个字符可以出现0次或多次,那么我们就需要用*元字符来完成匹配。
例1
#文本Send e-mail to Tom and Ada, their mailbox is 1944786548@qq.com and .18755518273@163.com, don't forget, Green's mailbox is green.sun@126.com, and finally my mailbox, ben@urgent.forta.com
#正则表达式\w+[\w.]*@[\w.]+\.\w+
#结果
Send e-mail to Tom and Ada, their mailbox is 1944786548@qq.com and .18755518273@163.com,don't forget, Green's mailbox is green.sun@126.com, and finally my mailbox,ben@urgent.forta.com
现在我们可以看到4个邮箱都正确的匹配了。
1.3匹配零个或一个字符
?元字符,只能匹配一个字符(或字符集合)的零次或一次出现,最多不超过一次。
例1
#文本The URL is http://www.forta.com/,to connect securely use https://www.forta.com/ instead.
#正则表达式https?://[\w./]+
#结果
The URL is http://www.forta.com/,to connect securelyuse https://www.forta.com/instead.
https?可以匹配https也可以匹配http达到了我们想要的效果。
2.匹配的重复次数
想要指定重复次数,就需要{}元字符给出。比如,{3}意味着模式里的前一个字符或字符集合必须在原始文本中连续出现3次才算一个匹配。{2,4}的含义是最少重复2次,最多重复4次。{3,}表示至少重复3次。
例1
我们想找出金额大于$100的订单
#文本1001: $123.341002: $1349.231003: $34.231004: $345.341005: $91.34
#正则表达式\$\d{3,}\.\d{2}
#结果
1001: $123.34
1002: $1349.23
1003: $34.23
1004: $345.34
1005: $91.343防止过度匹配
例1
#文本<B>AK</B> and <B>HI</B>
#正则表达式<B>.*</B>
#结果
<B>AK</B>and <B>HI</B>上述结果将<B>AK</B> and <B>HI</B>全部匹配了,这是因为第一个<B>到最后一个</B>之间的所有东西都被.*一网打尽。造成这样的原因是*和+都是所谓的”贪婪型”元字符,他们在进行匹配时,是多多益善而不是适可而止。这时我们需要使用这些元字符的”懒惰型“。
贪婪型
懒惰型
*
*?
+
+?
{n,}
{n,}?
例2
#文本<B>AK</B> and <B>HI</B>
#正则表达式<B>.*?</B>
#结果
<B>AK</B> and <B>HI</B>- 正则表达式入门之重复匹配
- 正则表达式入门之字符匹配
- 正则表达式入门之位置匹配
- 正则表达式-重复匹配
- 正则表达式 匹配重复数字
- 正则表达式匹配重复字符串
- 正则表达式匹配不确定重复
- python 正则表达式 重复匹配
- 正则表达式之匹配
- 正则表达式3____重复匹配
- 正则表达式4____重复匹配(2)
- js 正则表达式匹配去除重复字符
- 正则表达式学习(七)重复匹配
- 正则表达式5——重复匹配
- 正则表达式-重复匹配(二)
- 正则表达式的重复匹配问题
- 正则表达式(三)-- 重复匹配
- 正则表达式之匹配关系
- QNX系统的实时性分析-实时性能测试标准
- 2017.8 模拟赛6 比赛笔记
- USACO第一单元全部参考代码
- “沙漏形状”算法题
- 希尔排序---for循环步长大于1时候的终止条件有问题
- 正则表达式入门之重复匹配
- mybatis编程整理
- HDU 6124-Euler theorem
- Docker安装Jenkins
- 2017.8模拟赛7 比赛笔记
- hdu 6109 数据分割(并查集+set合并)
- HDU 6130-Kolakoski(Kolakoski序列)
- 仿qq空间标题变色和仿知乎列表滑动隐藏和显示效果
- MOOC清华《面向对象程序设计》第2章:函数重载实验