正则表达式以及delphi中的TPerlRegEx的使用

正则表达试可谓是大名鼎鼎
正则表达式的作用:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。而delphi中的TPerlRegEx可以用正则表达式来实现匹配并替换为相应的字符串。
正则表达式主要由元字符和限定符构成。 元字符用来匹配特定的字符,而限定符用来限定元字符匹配的次数或匹配规则。
常用的元字符:
. 匹配除换行符以外的任意字符
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结尾
\w 匹配数字字母下划线 [0-9a-zA-Z_]
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除X以外的任意字符
[^aeiou] 匹配不包含aeiou这几个字母以外的任意字符
2.正则表达式的限定符:
  • 重复零次或多次
    + 重复一次或更多次
    ? 重复零次或一次
    {n} 重复n次
    {n,} 重复n次或更多次 {n,m} 重复n到m次

另外正则表达式中经常出现“()”,这个是用来分组,主要是在进行替换的时候用,下面会介绍。
正则表达式想起来简单,但是用起来不容易,写出的正则表达式一定要检验其正确性。
3.下面举例说明:
要匹配的字符串: http://xxx/original/index.php
正则表达式:^/original/(.*).php
替换的字符串: /modified/$1.aspx
替换后的字符串:http://xxx/modified/index.aspx
上面的替换字符$1代表的就是正则表达是中第一个()中的内容,依次$2,$3代表第二个,第三个()

4.delphi中使用正则表达式
还是举例说明:
引用PerlRegEx单元
with TPrelRegEx.Create do
try
Subject := '要进行匹配的原字符串';
RegEx := '进行匹配的正则表达式';
Replacement := '替换的字符串';
if Match then
Replace
finally
Free
end

也可以用Options属性来指定匹配中的一些处理,以下是Options的一些选项
[preCaseLess] 不区分大小写进行匹配, 如果不设置,默认的是区分大小写进行匹配
[preMultiLine] ^和$不仅匹配字符串的首尾,也可以匹配一行的开始和结尾
[preSingleLine] ???
[preExtended] 正则表达式包含的空白符换行符、注释,会被过滤掉
[preAnchored] 只能匹配字符串的头,或者是一个匹配后的头
[preUnGreedy] 最小匹配,默认是最大匹配
[preNoAutoCapture] ???

如果一个正则表达式用来匹配很多字符串,可以对正则表达式进行优化:
例如在正则表达式进行compire后会将正则表达式编译成内部形式,当用同一个表达式匹配多个字符串时可以提高效率。Study,对编译的模式进行学习,如果需要使用同一个正则表达式很多次,可以通过调用study方法来提高匹配的效率。

posted on 2012-09-12 13:59  unlike_happy  阅读(1254)  评论(0编辑  收藏  举报

导航