正则表达式的高级技巧8个常用的概念

saonian886

saonian886

2016-02-20 01:08

今天图老师小编给大家展示的是正则表达式的高级技巧8个常用的概念,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

正则表达式高级技巧背后的关键概念

英文原文来自 Smashing Magazine 。由 笨活儿 翻译。转载请注明出处。

正则表达式(Regular Expression, abbr. regex) 功能强大,能够用于在一大串字符里找到所需信息。它利用约定俗成的字符结构表达式来发生作用。不幸的是,简单的正则表达式对于一些高级运用,功能远远不够。若要进行筛选的结构比较复杂,你可能就需要用到高级正则表达式。

本文为您介绍正则表达式的高级技巧。我们筛选出了八个常用的概念,并配上实例解析,每个例子都是满足某种复杂要求的简单写法。如果你对正则的基本概念尚缺乏了解,请先阅读这篇文章,或者这个教程,或者维基条目。
这里的正则语法适用于PHP,与Perl兼容。

1. 贪婪/懒惰

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

所有能多次限定的正则运算符都是贪婪的。他们尽可能多地匹配目标字符串,也就是说匹配结果会尽可能地长。不幸的是,这种做法并不总是我们想要的。因此,我们添加懒惰限定符来解决问题。在各个贪婪运算符后添加?能让表达式只匹配尽可能短的长度。另外,修改器U也能惰化能多次限定的运算符。理解贪婪与懒惰的区别是运用高级正则表达式的基础。

贪婪操作符

操作符 * 匹配之前的表达式零次或零次以上。它是一个贪婪操作符。请看下面的例子:

preg_match( '/h1.* /h1/', '/h1h1这是一个标题。/h1
h1这是另一个。/h1', $matches );

句点(.)能代表除换行符外的任意字符。上面的正则表达式匹配 h1 标签以及标签内的所有内容。它用句点(.)和星号(*)来匹配标签内的所有内容。匹配结果如下:

h1这是一个标题。/h1
h1这是另一个。/h1

整个字串都被返回。* 操作符会连续匹配所有内容 甚至包括中间的 h1 闭合标签。因为它是贪婪的,匹配整个字串是符合其利益最大化原则。

懒惰操作符

把上面的式子稍作修改,加上一个问号(?),能让表达式变懒惰:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

/h1.*? /h1//h1

这样它会觉得,只需匹配到第一个 h1 结尾标签就完成任务了。
另一个有着类似属性的贪婪操作符是 {n,} 。它代表之前的匹配模式重复n次或n次以上,如果没有加上问号,它会寻找尽可能多的重复次数,加上的话,则会尽可能少重复(当然也就是重复n次最少)。

# 建立字串
$str = 'hihihi oops hi';
# 使用贪婪的{n,}操作符进行匹配
preg_match( '/(hi){2,}/', $str, $matches );  # matches[0] 将是 'hihihi'
# 使用堕化了的 {n,}? 操作符匹配
preg_match( '/(hi){2,}?/', $str, $matches );  # matches[0] 将是 'hihi'

展开更多 50%)
分享

猜你喜欢

正则表达式的高级技巧8个常用的概念

Web开发
正则表达式的高级技巧8个常用的概念

正则表达式高级学习技巧

Web开发
正则表达式高级学习技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

常用正则表达式 比较实用

Web开发
常用正则表达式 比较实用

常用正则 常用的C#正则表达式

编程语言 网络编程
常用正则 常用的C#正则表达式

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

正则表达式

Web开发
正则表达式

正则表达式口诀 正则表达式学习工具

Web开发
正则表达式口诀 正则表达式学习工具

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Word怎么画横线和下划线

Word怎么画横线和下划线

通过JS正则表达式实现验证邮件的代码

通过JS正则表达式实现验证邮件的代码
下拉加载更多内容 ↓