正则表达式基础
Posted 老_张
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式基础相关的知识,希望对你有一定的参考价值。
最近失眠比较厉害,python遇到瓶颈了,所以就翻翻正则表达式,打发时间。。。
1、正则表达式(regular expression,):简称regex,可以理解为一种工具。
2、正则表达式的两种基本用途:搜索(匹配)和替换(匹配并替换)。
比如:把URL地址字符串替换为可点击的URL地址场景:
http://www.baidu.com/
使用正则表达式替换为可点击URL地址的场景,替换结果为:
<A HREF="http://www.baidu.com">http://www.baidu.com/</A>
3、定义:正则表达式是一些用来匹配和处理文本的字符串,使用正则表达式语言创建,是内嵌于其他语言或软件产品中的“迷你”语言,几乎所有的语言或工具都支持它。
下面列举一些合法的正则表达式:
Ben
.
www\.forfa\.com
[a-zA-ZQ-9_.]*
<[Hh]1>.*</[Hh]1>
\r\n\r\n
\d{3,3}-\d{3,3}-\d{4,4}
4、一般来说,应用程序大多使用菜单选项和对话框来访问正则表达式,程序设计语言大多在函数或对象类中使用正则表达式。
5、常见应用软件和编程语言对正则表达式的支持汇总如下:
A.1 grep
grep是一种用来对文件或标准输入文本进行文字搜索的Unix工具,支持基本、扩展和Perl正则表达式。
-E:使用扩展正则表达式
-G:使用基本正则表达式
-P:使用Perl正则表达式
注意事项:
①默认情况下,grep将把包含着匹配的各个文本全部显示,如果只想查看匹配结果,请使用-o选项;
②使用-v选项将对整个操作匹配操作进行求非————只显示不匹配的文本行;
③使用-c选项只显示匹配的总数而不是此次匹配的细节;
④grep工具只能进行搜索操作,不能进行替换操作;
A.2 javascript
javascript 1.x版本在string和RegExp对象的以下几个方法里实现了正则表达式处理。
exec:一个用来搜索一个匹配的RegExp方法
match:一个用来匹配一个字符串的string方法
replace:一个用来完成替换操作的string方法
search:一个用来测试在某给定字符串里是否存在着一个匹配的string方法
split:一个用来把一个字符串拆分为多个子串的string方法
test:一个用来测试在某给定字符串里是否存在着一个匹配的RegExp方法
△JavaScript度对正则表达式的支持源自Perl语言。
注意事项:
①JavaScript使用命令行选项来管理全局的区分大小写搜索,g选项激活全局搜索功能,i选项让匹配操作不区分字母大小写,这两个选项可组合为gi;
②其他命令行选项包括:m,支持多行字符串;s,支持单行字符串;x,忽略正则表达式模式里的空白字符;
③在使用回溯引用时,$‘将返回被匹配字符串前面的所有东西,$`将返回被匹配字符串后面的所有东西;$+将返回最后一个被匹配的子表达式,$&将返回被匹配到的所有东西;
④JavaScript提供一个名为RegExp的全局对象,在执行完一个正则表达式后,可以通过这个对象获得与这次执行有关的信息;
⑤JavaScript不支持POSIX字符类;
⑥JavaScript不支持\A和\Z。
A.3 Microsoft ASP
所有ASP脚本语言都支持正则表达式,通过一个名为RegExp的对象提供,其包含以下几个方法:
Excute:执行一个正则表达式的搜索操作
Replace:执行一个”搜索和替换”操作
Test:检查一个字符串是否与一个给定的字符串匹配
ASP正则表达式还有一些局限性,下面是注意事项:
①执行操作之前必须先创建并填充一个Regexp对象的实例;
②正则表达式被存放在Regexp.Pattern里;
③支持全局限定符和大小写限定符;前者是一个存放在Regexp.Global里的布尔值,后者是一个存放在RegExp.IgnoreCase里的布尔值;
④Excute()方法将返回一个Match对象,通过这个对象可以访问到所有的匹配;
⑤不支持向前查找(?=和?!)和向后查找(?>=和?<!)。
A.4 Macromedia ColdFusion
Macromedia ColdFusion通过以下四个函数提供正则表达式支持:
REFid:执行搜索
REFindNoCase():执行不区分字母大小写的搜索
REReplace:执行替换
REReplaceNoCase():执行不区分字母大小写的替换
ColdFusion支持与Perl语言兼容的正则表达式,以下是注意事项:
①.总是匹配换行符;
②使用回溯引用时,必须使用\n代替$n来引用回溯引用变量。ColdFusion将自动把替换字符串里的所有$n字符解释为它们的转义含义;
③不必对替换字符串里的反斜线字符进行转义,ColdFusion将自动把他们解释为它们的转义含义。但大小写转换序列或它们的转义版本(例如\u或\\u)属于例外;
④嵌入限定符((?i))总是影响整个表达式,即使它们只出现在某个子表达式内部;
⑤ColdFusion不支持在替换字符串里使用\Q、\u\L或\l\U;
⑥ColdFusion不支持向后查找(?<=和?<!);
⑦ColdFusion不支持条件处理;
⑧ColdFusion不支持\x、\N、\p和\C;
未完,待续。。。
大概这个月,会看完正则表达式,然后整理完笔记吧,唉。。。
以上是关于正则表达式基础的主要内容,如果未能解决你的问题,请参考以下文章