正则表达式到底是什么东西?
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式
就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
很可能你使用过Windows/Dos下用于文件查找的通配符(wildcard)
,也就是
*
和
?
。
如
果你想查找某个目录下的所有的Word文档的话,你会搜索*.doc
。在这里,*
会被解释成任意的字符串。和通配符类似,正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求——当然,代价就是更复杂——比如你可以编写一个正则表达式,用来查找所有以0开头,后面跟着2-3个数字,然后是一个连字号“-”,最后是7或8位数字的字符串
(像010-12345678
或0376-7654321
)。
如果你不觉得正则表达式很难读写的话,要么你是一个天才,要么,你不是地球人。正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。由于难于读写,容易出错,所以找一种工具对正则表达式进行测试是很有必要的。
元字符
表1.常用的元字符
代码
说明
.
|
匹配除换行符以外的任意字符
|
\w
|
匹配字母或数字或下划线或汉字
|
\s
|
匹配任意的空白符
|
\d
|
匹配数字
|
\b
|
匹配单词的开始或结束
|
^
|
匹配字符串的开始
|
$
|
匹配字符串的结束
|
式中所有的限定符(指定数量的代码,例如*,{5,12}等):
表2.常用的限定符
代码/语法
说明
*
|
重复零次或更多次
|
+
|
重复一次或更多次
|
?
|
重复零次或一次
|
{n}
|
重复n次
|
{n,}
|
重复n次或更多次
|
{n,m}
|
重复n到m次
|
下面是一些使用重复的例子:
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义
:
表3.常用的反义代码
代码/语法
说明
\W
|
匹配任意不是字母,数字,下划线,汉字的字符
|
\S
|
匹配任意不是空白符的字符
|
\D
|
匹配任意非数字的字符
|
\B
|
匹配不是单词开头或结束的位置
|
[^x]
|
匹配除了x以外的任意字符
|
[^aeiou]
|
匹配除了aeiou这几个字母以外的任意字符
|
大量 UNIX 命令使用正则表达式作为参数。从技术角度而言,正则表达式
是表示某种模式的字符串(也就是说,由字母、数字和符号组成的字符序列),用于定义零或更长的字符串。正则表达式使用元字符(例如,星号 [*
] 和问号 [?
])来匹配其他字符串的部分或全部内容。正则表达式不一定包含通配符,但通配符可以使正则表达式在搜索模式和处理文件时发挥更大的作用。表 1
显示了一些基本正则表达式序列。
表 1. 正则表达式序列
序列
说明
脱字符 (^
) |
匹配出现在行首的表达式,例如 ^A
|
美元符号 ($
) |
匹配出现在行末的表达式,例如 A$
|
反斜杠 (\
) |
取消下一个字符的特殊含义,例如 \^
|
方括号 ([]
) |
匹配括起来的任一字符,例如 [aeiou]
(使用连字符 [-
] 表示范围,例如 [0-9]
)。 |
[^ ]
|
匹配除括起来字符以外的任一字符,例如 [^0-9]
|
句点 (.
) |
匹配除行尾之外的任意单个字符 |
星号 (*
) |
匹配零个或多个前驱字符或表达式 |
\{x,y\}
|
匹配出现过 x
到 y
个和前面相同的内容 |
\{x\}
|
精确匹配出现过 x
个和前面相同的内容 |
\{x,\}
|
匹配出现过 x
个或更多和前面相同的内容 |
如下显示了与 grep
命令一起使用的一些基本正则表达式。
$ # Lists your mail
$ grep '^From: ' /usr/mail/$USER
$ # Any line with at least one letter
$ grep '[a-zA-Z]' search-file.txt
$ # Anything not a letter or number
$ grep '[^a-zA-Z0-9] search-file.txt
$ # Find phone numbers in the form 999-9999
$ grep '[0-9]\{3\}-[0-9]\{4\}' search-file.txt
$ # Find lines with exactly one character
$ grep '^.$' search-file.txt
$ # Find any line that starts with a period "."
$ grep '^\.' search-file.txt
$ # Find lines that start with a "." and 2 lowercase letters
$ grep '^\.[a-z][a-z]' search-file.txt
分享到:
相关推荐
正则表达式作为一种文本处理...它不仅向读者展示了正则表达式的强大功能,还通过实例教学的方式,帮助读者克服了学习正则表达式的障碍。对于那些想要提高自己文本处理能力的程序员来说,这本书无疑是一个非常好的选择。
C#作为.NET框架的一部分,提供了全面支持正则表达式的类库,使得开发人员能够方便地利用正则表达式进行复杂的文本处理任务。在这个“强大的正则表达式生成工具 C#版”中,我们可以期待一个专为C#开发者设计的高效、...
《精通正则表达式(第三版)简体中文版》是一本全面介绍正则表达式技术的书籍,不仅覆盖了基本语法和高级特性,还详细讲解了在不同编程环境下的具体应用方法。对于想要深入学习并掌握正则表达式技术的读者来说,本书...
正则表达式是一种强大的文本处理工具,用于在字符串中匹配、查找、替换或者提取特定模式。它是编程语言中不可或缺的一部分,特别是在处理文本数据时。"精通正则表达式"是一本备受推崇的书籍,由Jeffrey E. F. Friedl...
学习和熟练掌握C#中的字符串和正则表达式,能够极大地提升你在处理文本数据时的效率和灵活性。在实际开发中,结合`StringBuilder`类处理大量字符串拼接,以及利用正则表达式的强大功能进行数据验证和清洗,都将使你...
专家点评:《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则...
本视频教程将全面覆盖正则表达式的基础与高级用法,并结合JavaScript和Java这两种常见编程语言进行实战演示。 在正则表达式的简单语法部分,你将学习到: 1. 基本字符匹配:如点号(.)匹配任意单个字符,星号(*...
《精通正则表达式》是一本非常适合想要深入学习正则表达式的读者的书籍。它不仅涵盖了正则表达式的基础知识,还深入介绍了其高级用法和技术细节,对于希望提升自己技能的程序员来说,这是一本不可或缺的好书。无论是...
5. **文档和教程**:内置的帮助文档和教程将帮助初学者理解和学习正则表达式,同时也为高级用户提供参考资料。 6. **正则表达式解释**:解析并解释正则表达式的各个部分,帮助理解其工作原理。 7. **性能分析**:...
专家点评:《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则...
此调试工具的源码对易语言学习者来说是一份宝贵的资源,他们可以通过阅读和分析源码,深入理解正则表达式的实现原理,提升自己的编程技能。 在使用易语言正则表达式调试工具时,开发者需要注意以下几点: 1. **...
5. **正则表达式参考手册**:可能提供了一份全面的正则表达式语法和函数参考,用户可以随时查阅,提高开发效率。 在压缩包中,有三个HTML文件可能分别代表不同版本的测试工具,可能一个是加密版,一个是JavaScript...
标题提到的“正则表达式测试工具”是一个专门为了辅助学习和调试正则表达式而设计的应用程序。 该工具通常具有以下特性: 1. **分块界面**:描述中提到工具分为三个部分,这可能指的是输入区、测试区和结果展示区...
并基于目前流行的程序语言和应用环境-如c、asp.net、jsp、或php 全面介绍了创建正则表达式的方法 以及正则表达式在web环境中的各种应用。 【电子版来自互联网,仅供预览及学习交流使用,不可用于商业用途,如有版权...
学习正则表达式不仅能提升编程效率,还能使你在处理复杂字符串任务时游刃有余。无论是数据库查询优化、网页爬虫开发还是前端表单验证,掌握正则表达式都将大大提高你的工作效率。因此,建议每一位IT从业者都应系统...
总之,"正则表达式系统教程"是一份全面的指南,帮助你从零开始掌握正则表达式,无论你是为了处理文本数据,还是为了提升编程技能,这个教程都会是你宝贵的资源。通过深入学习和实践,你将能够熟练地运用正则表达式...
这款名为"Delphi 2010正则表达式插件"的组件,其核心是基于Perl Compatible Regular Expressions (PCRE)库,这是一款广泛使用的正则表达式库,它对正则表达式的支持非常全面,提供了丰富的功能和语法。在Delphi 2010...
在这个最完美的正则表达式教程和最全面的正则表达式参考手册中,你将掌握所有必要的知识,成为正则表达式的专家。 一、基础概念 正则表达式由普通字符(例如字母和数字)和特殊字符(称为“元字符”)组成。它们...
本资料合集包含了国内外多种正则表达式教材,旨在帮助初学者到进阶者全面理解并熟练运用正则表达式。以下将详细介绍一些核心概念和关键知识点: 1. **基础符号与元字符**:正则表达式的精髓在于其特殊字符,如"....