首页 > 代码库 > 正则表达式(一)基础

正则表达式(一)基础

最近失眠比较厉害,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;

 

未完,待续。。。

大概这个月,会看完正则表达式,然后整理完笔记吧,唉。。。

 

正则表达式(一)基础