一、句点符号
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。另外,假设有一本英文字典,你可以用正则表达式搜索它的全部内容。要构造出这个正则表达式,你可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
正则表达式:t.n
|
匹配:ten tan tin ton t n t#n等
|
二、 方括号符号
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,因为在方括号之内你只能匹配单个字符:
正则表达式:t[aeio]n
|
匹配:tan ten tin ton
|
三、 “或”符号
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方括号,因为方括号只允许匹配单个字符,这里必须使用圆括号“()”。
正则表达式:t(a|e|i|o|oo)n
|
匹配:tan ten tin ton toon
|
四、 表示匹配次数的符号
下表显示了表示匹配次数的符号,这些符号用来确定紧靠该符号左边的符号出现的次数:
符号
|
次数
|
*
|
0次或者多次
|
+
|
1次或者多次
|
?
|
0次或者1次
|
{n}
|
刚好n次
|
{n,m}
|
从n次到m次(大于等于n次,小于等于m次)
|
假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是999-99-9999。用来匹配它的正则表达式如下表所示。在正则表达式中,连字符(“-”)有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安全号码中的连字符号时,它的前面要加上一个转义字符“\”。
匹配所有123-12-1234形式的社会安全号码
[0-9]{3}\-[0-9]{2}\-[0-9]{4}
|
假设进行搜索的时候,你希望连字符号可以出现,也可以不出现——即,999-99-9999和999999999都属于正确的格式。这时,你可以在连字符号后面加上“?”来限定符号数量
匹配所有123-12-1234和123121234形式的社会安全号码
[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}
|
下面我们再来看另外一个例子。美国汽车牌照的一种格式是四个数字加上二个字母。它的正则表达式前面是数字部分“[0-9]{4}”,再加上字母部分“[A-Z]{2}”。下表显示了完整的正则表达式。
匹配典型的美国汽车牌照号码,如8836KV
[0-9]{4}[A-Z]{2}
|
五、 “否”符号
“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如下表的正则表达式匹配所有单词,但以“X”字母开头的单词除外。
匹配所有单词,但“X”开头的除外
[^X][a-z]+
|
六、 圆括号和空白符号
假设要从格式为“June 26, 1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达式可以如下表所示:
匹配所有Moth DD,YYYY格式的日期
[a-z]+\s[0-9]{1,2},\s*[0-9]{4}
|
“\s”符号是空白符号,匹配所有的空白字符,包括Tab字符。
七、 其它符号
为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如下表所示:
符号
|
等价正则表达式
|
\d
|
[0-9]
|
\D
|
[^0-9]
|
\w
|
[A-Z0-9]
|
\W
|
[^A-Z0-9]
|
\s
|
[\t\n\r\f]
|
\S
|
[^\t\n\r\f]
|
例如,在前面社会安全号码的例子中,所有出现“[0-9]”的地方我们都可以使用“\d”。修改后的正则表达式如下表所示:
匹配所有123-12-1234格式的社会安全号码:
\d{3}\-\d{2}\-\d{4}
|
分享到:
相关推荐
正则表达式基础学习笔记!!!从基础开始正则表达式基础学习笔记!!!
正则表达式基础正则表达式基础正则表达式基础正则表达式基础
vba正则表达式基础知识介绍,由浅入深,实例讲解
正则表达式基础语法及常用正则表达式及正则手册(HTML版)
Python正则表达式基础,译自官方文档Regular Expression HOWTO
该教程中所介绍的正则表达式应用仅仅是最为简单的(并没有完全地涉及到 Pattern 类支持的所有正则表达式语法,也没有涉及到高级的应用),适合于从未接触过或者是尚未完全明白正则表达式基础的学习者。在学习完该...
主要描述正则表达式的基础,包括正则表达式的格式,举例
javastript正则表达式基础 javastript正则表达式基础 javastript正则表达式基础
正则表达式基础入门教程 1. 本文目标 2. 如何使用本教程 3. 正则表达式到底是什么? 4. 入门 5. 测试正则表达式 6. 元字符 7. 字符转义 8. 重复 9. 字符类 10. 反义 11. 替换 12. 分组 13. 后向引用 14...
本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。 ...
正则表达式基础知识,对于初学者不错的指导。
正则表达式简介 为什么需要正则表达式? 文本的复杂处理。 正则表达式的优势和用途? 一种强大而灵活的文本处理工具; 提供了一种紧凑的、动态的方式,能够以一种完全通用的方式来解决各种字符串...
01C#正则表达式基础教程.doc
常用的正则表达式,包括正则表达式基础讲解,正则表达式格式、例子等
正则表达式基础知识正则表达式基础知识正则表达式基础知识
正则表达式基础知识!!! 我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配...
Groovy 正则表达式 Groovy正则表达式语法 背景项目使用Gradle作为自动化构建的工具, 闲暇之余对这个工具的使用方式以及其配置文件依赖的Groov
正则表达式 详解 基础 正则表达式之道(A Tao of Regular Expressions)
将正则表达式的基础知识浓缩到一张纸上,超实用~
本文介绍了深入学习正则表达式的基础知识和推荐内容。 本文主要面向对正则表达式知之甚少或没有使用经验,但却熟悉 ASP.NET、可借助 .NET 编程的初学者。此外,希望本文连同 regular expression cheat sheet 成为有...