爱飞软件正则表达式入门

2012-10-5 18:22| 发布者: admin| 查看: 10061| 评论: 0

正则表达式(以下简称正则)是一种可以用于模式匹配和替换的强有力的字符工具,简单说我们可以利用正则对有规律的字符进行精确匹配、定位,从而可以过滤或者替换,爱飞软件内置了标准的正则解释器,便于大家使用。 ...
 
  正则表达式(以下简称正则)是一种可以用于模式匹配和替换的强有力的字符工具,简单说我们可以利用正则对有规律的字符进行精确匹配、定位,从而可以过滤或者替换,爱飞软件内置了标准的正则解释器,便于大家使用。
 

在爱飞软件中,主要有3个地方可以使用正则

1.采集规则--标签处理--正则 :处理采集字段(ubb代码)
2.处理方案--过滤--EASY过滤:处理标题、正文(ubb代码)
3.p语言                                :可以处理任意代码(ubb或html代码),注意某些字符需要二次转义,空行用函数过滤。
 

爱飞软件正则入门

1.只支持一行(一段),不支持跨行处理
2.有先后执行顺序,自上而下执行
3.以下特殊代码,为正则表达式公式代码,如果需要匹配这些字符,需要用反斜杠“\”转义,如\(表示(字符:
          [ ] ? ^ $ + ( ){ } | .
4.正则规则括号的含义:一对括号代表一个$,便于“替换规则”提取、替换对应的字符
          如正则规则: (编辑:)(.*)         替换规则:$2 
          表示匹配 以“编辑:”为开头的任意一行文字,执行后将过滤掉“编辑:”,保留“编辑:”之后的字符
          $1代表第1对括号(编辑:)$2表示第2对括号(.*) ,在替换规则中$1未写,表示丢弃(删除)$1所代表的字符,当然,替换规则中$的排序可以按需要任意排列。

首先介绍最常用的2个正则代码,掌握后即可处理绝大部分使用场合:

常用正则代码
序号 代码 说明
1 .* .表示任意一个元字符,*为贪婪匹配,这样可以“最大化匹配”任意字符,软件内置了此通配字符按钮
2 .*? 非贪婪匹配,尽可能少的匹配任意字符,不可写在表达式开头或结尾
 
举例如下:
 
正则示例
序号 例子及说明 正则规则 替换规则
1 过滤包含“下一页”的行,括号的位置可以自行改动,保持对应关系即可 (.*)(下一页)(.*)
2 过滤包含“下一页”或“下页”的行,|表示或的关系 (.*下一页.*)|(.*下页.*)
3 过滤括号及括号内文字,用.*?避免匹配太多误删文字 (\()(.*?)(\))
4 去除链接,保留关键字,按照括号的顺序,$2表示关键字(注意和下图区别) (\[url=.*?\])(.*?)(\[/url\]) $2

下图即上面第4条正则示例的原型,我们手工增加了?号并调整了括号顺序,这样正则表达式更精确、易于理解:

 

便于大家学习,下面表格整理更多正则代码和例子

其中 附件名正则替换在“处理方案--附件-附件名正则重命名”设置

更多正则代码及示例
序号 正则代码 代码、格式说明 正则示例描述 处理字符 使用正则规则 替换规则 处理结果
1 \ 将特殊字符转义
[ ] ? ^ $ + ( ){ } | .
过滤所有包含“编辑”字样的中括号提示 [最后由……编辑] (\[.*?编辑.*?\])
2 \d 1个小写数字
3 \d+ 1个及以上小写数字 过滤包含数字的括号,如附件大小 本地下载(8.2KB) (\(.*?\d+.*?\)) 本地下载
4 \d{2} {数字}表示重复次数 替换日期格式 2012年10月 (\d{2})(年)(\d+)(月) $1-$3 2012-10
5 \d{2,} 2个及以上小写数字
6 \d{1,3} 1-3个小写数字
7 \D 任意非数字字符
8 [BB]+ 匹配字符BB,1次及以上
9 \w 1个大小字母、数字

过滤网址格式如:

字母.字母.字母

WWW.baidu.com (\w+)(\.)(.*?)(\.)(\w+)
10 \W 1个非单词字符
11 \s 任意空白字符,如空格 删除标题内空格 正 则 入门 (\s+) 正则入门
12 \S 任意非空白字符

任意一行(不包含空格)加前缀,比如标题、附件名加前缀

正则入门 (\S+) 爱飞-$1 爱飞-正则入门
13 .* 任意字符

只给rar附件加前缀,其他后缀一样处理,包括图片

教程.rar (.*\.rar) 爱飞-$1 爱飞-教程.rar
14 换行符号(不可视)
只有p语言可用
15 \r 回车符号只有
p语言可用
 
 

p语言中的用法示例

p语言有3个字符 ' " \ 需要转义,比如正则代码\d,因为有一个反斜杠,写到p语言内还需要再加一个反斜杠\\d
 
下例为一段完整的p语言代码,删除文章标题中的空白字符,其中regexrep为正则函数,正则中\s表示空字符,因为\在p语言里面要转义,所以需要多加一个\
  1. void main(void)
  2. {
  3. $m_ntitle=regexrep($m_ntitle, "(\\s+)", "");
  4. //双斜杠为注释说明: 标题变量=正则替换函数(标题变量, "正则规则", "替换规则");
  5. }




最新评论

更多