文档章节

正则表达式的基本语法

 木庄
发布于 10/23 17:25
字数 1874
阅读 15
收藏 0

本文摘自LTP.NET知识库。

正则表达式的形式一般如下:

/love/

其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。

用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。

为了能够使用户更加灵活的定制模式内容,正则表达式提供了专门的“元字符”。

所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。

较为常用的元字符包括: “+”, “*”,以及 “?”。

其中,

**“+”**元字符规定其前导字符必须在目标对象中连续出现一次或多次,

**“*”**元字符规定其前导字符必须在目标对象中出现零次或连续多次,

**“?”**元字符规定其前导对象必须在目标对象中连续出现零次或一次。

下面,就让我们来看一下正则表达式元字符的具体应用。

/fo+/

因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。

/eg*/

因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。

/Wil?/

因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者 “Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。

除了元字符之外,用户还可以精确指定模式在匹配对象中出现的频率。

例如,

/jim{2,6}/

上述正则表达式规定字符m可以在匹配对象中连续出现2-6次,因此,上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。

在对如何使用正则表达式有了初步了解之后,我们来看一下其它几个重要的元字符的使用方式。

\s:用于匹配单个空格符,包括tab键和换行符;

\S:用于匹配除单个空格符之外的所有字符;

\d:用于匹配从0到9的数字;

\w:用于匹配字母,数字或下划线字符;

\W:用于匹配所有与\w不匹配的字符;

**. **:用于匹配除换行符之外的所有字符。

(说明:我们可以把\s和\S以及\w和\W看作互为逆运算) 下面,我们就通过实例看一下如何在正则表达式中使用上述元字符。

/\s+/

上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。

/\d000/

如果我们手中有一份复杂的财务报表,那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。

除了以上所介绍的元字符之外,正则表达式中还具有另外一种较为独特的专用字符,即定位符

定位符用于规定匹配模式在目标对象中的出现位置。

较为常用的定位符包括: “^”, “$”, “\b” 以及 “\B”。

其中,

**“^”**定位符规定匹配模式必须出现在目标字符串的开头,

**“$”**定位符规定匹配模式必须出现在目标对象的结尾,

\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一,

**“\B”**定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

同样,我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。

举例来说:

/^hell/

因为上述正则表达式中包含“^”定位符,所以可以与目标对象中以 “hell”, “hello”或 “hellhound”开头的字符串相匹配。

/ar$/

因为上述正则表达式中包含“$”定位符,所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。

/\bbom/

因为上述正则表达式模式以“\b”定位符开头,所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。

/man\b/

因为上述正则表达式模式以“\b”定位符结尾,所以可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。

为了能够方便用户更加灵活的设定匹配模式,正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。

例如:

/[A-Z]/

上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。

/[a-z]/

上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。

/[0-9]/

上述正则表达式将会与从0到9范围内任何一个数字相匹配。

/([a-z][A-Z][0-9])+/

上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。

这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()” 把字符串组合在一起。

“()”符号包含的内容必须同时出现在目标对象中。

因此,上述正则表达式将无法与诸如 “abc”等的字符串匹配,因为“abc”中的最后一个字符为字母而非数字。

如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算,在多个不同的模式中任选一个进行匹配的话,可以使用管道符 “|”。

例如:

/to|too|2/

上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。

正则表达式中还有一个较为常用的运算符,即否定符 “[^]”。

与我们前文所介绍的定位符 “^” 不同,否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。

例如:

/[^A-C]/ 

上述字符串将会与目标对象中除A,B,和C之外的任何字符相匹配。

一般来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符。

最后,当用户需要在正则表达式的模式中加入元字符,并查找其匹配对象时,可以使用转义符“\”。

例如:

/Th\*/ 

上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配。

本文来自木庄网络博客> 正则表达式的基本语法

© 著作权归作者所有

粉丝 0
博文 16
码字总数 12580
作品 0
厦门
私信 提问
数据爬虫:正则表达式与字符串处理函数 - 知乎

无论是利用R中的RCurl组件还是Python的BeautifulSoup库,对网页HTML完成下载解析之后,都可以从这些看似杂乱无章的文本中拿到感兴趣的数据。前文已经介绍过HTML/XML专用工具XPath表达式,下面...

狗熊会
10/21
0
0
Regex C++: 正则表达式(1)

自C++11起标准库提供了正则表达式库,允许我们使用通配符和pattern来查找和替换掉string中的字符. Match: 将整个string拿来匹配某个regex. Search: 查找某个string中与regex吻合的部分. Rep...

SHIHUAMarryMe
2016/08/03
184
0
follow大神教程——实践java爬虫之补充

前4篇利用Java本身自带的URLConnection实现一些基本的抓取页面的功能,但是对于一些比较高级的功能,比如重定向的处理,HTML标记的去除,仅仅使用URLConnection还是不够的。 或许HttpClient抓...

realsa
2014/07/02
119
0
007零基础学Python:Python 正则表达式--学习笔记

Python 正则表达式 正则表达式基础 基本概念: 执行原理: 基本语法: 模式 描述 ^ 匹配字符串的开头 $ 匹配字符串的末尾。 . 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹...

weir_will
2017/07/02
0
0
Linux基础管理——文本处理(小命令组合解决大问题)

前言: 在服务器中对日志进行处理是十分常见的工作,所以运维对于各种文本工具来查看、分析、统计,是必备的基本工。那么学习正则表达式、grep、egrep、和tr、sort、uniq等常见的文件处理命令...

烽火狼烟_Gk
2017/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx主备模式笔记

(1)两台服务器 192.168.17.129 和 192.168.17.131 (2)在两台服务器安装 keepalived 安装 keepalived (1)使用 yum 命令进行安装 yum install keepalived –y (2)安装之后,在 etc 里面...

行者终成事
今天
4
0
004-Docker镜像

Docker镜像 一个通用的私有仓库,可以提升效率 Docker镜像构建分为两种,一种是手动构建,一种是Dockerfile(自动构建) 基于centos镜像构建手动制作nginx镜像 docker run --name testdocker -...

伟大源于勇敢的开始
今天
5
0
OSChina 周一乱弹 —— 我就加班,不去世不休息

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :《For Forever》90后那些小鲜肉歌手中,好像只有花花的歌能吸引我,这小家伙对音乐的感觉真是天才一般!#今日歌曲推荐# 《For F...

小小编辑
今天
9
1
【领会要领】web前端-轻量级框架应用(jQuery基础)

作者 | Jeskson 来源 | 达达前端小酒馆 jquery的安装和语法,jquery的多种选择器,dom操作和jquery事件。 jQuery框架,简介,优势,安装,语法,jQuery选择器,id选择器,类选择器,标记选择...

达达前端小酒馆
今天
6
0
MySQL 常用命令

无须死记硬背,直接 copy 就好。 1. 查看目前 mysql 用户 select user,host,password from mysql.user; 2. 修改 root 密码(使用内置函数修改) set password for root@localhost=password('y......

HuaiAnGG
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部