挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
游戏交易就上寄售网-专注稳定-诚信赢天下玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)天下盾/国内/免实名/免备案CDN无视一切CC/DD攻击
→入驻S9企业发卡网各种全黑号辅助群:475351077 ██【我要租此广告位】██.
.. .
查看: 3967|回复: 5
打印 上一主题 下一主题

[按键辅助教程] 万千军中直取首级的正则进阶,想不想学

[复制链接]
3正式会员
142/300

142

积分

47

主题

5

听众
已帮网友解决0 个问题
好评
0
贡献
95
海币
290
交易币
0
跳转到指定楼层
楼主
发表于 2015-5-20 17:57:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑



正则表达式进阶

[img=601,21]该链接无法确定安全[/img]

本文按键学院

技术支持


按键学院交流①群(1群已满):376122403

按键学院交流②群(2群):372671254

按键学院交流③群(3群):170084238



在之前的正则系列的院刊中,已经给大家初步的介绍了正则表达式的使用方法,以及介绍了部分常用的表达式元字符,这次

继续给大家介绍下其他的常用的元字符,以及一些正则的匹配技巧
正则系列:该链接无法确定安全

元字符


我们在之前已经介绍了元字符的分类,以及每个分类下的比较常用的元字符,比如说. \w \d ^ $ * + ?  
今天就再继续补充其他的一些元字符

元字符描述
\将下一个字符标记为特殊字符或字面值
()与模式匹配并记住匹配
{n}n为非负的整数。匹配恰好n次
{n,}n为非负的整数。匹配至少n次
{n,m}m和n为非负的整数。匹配至少n次,至多m次。
[xyz]一个字符集。与括号中字符的其中之一匹配。
[^xyz][^xyz]
[a-z]表示某个范围内的字符。
\b与单词的边界匹配,即单词与空格之间的位置。
\f与分页符匹配。
\n与换行符字符匹配。
\r与回车字符匹配。
\s与任何白字符匹配,包括空格、制表符、分页符等。
\S与任何非空白的字符匹配。
\t与制表符匹配。
\v与垂直制表符匹配。
\num匹配num个,其中num为一个正整数。引用回到记住的匹配
\n匹配n,其中n是一个八进制换码值。(这里的n和上面换行符是不同的)
\xn匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长


使用技巧


上面列出了一些比较常用的元字符,一些元字符的使用方法都是比较雷同的,只是代表的字符不一样,所以这里就拿出一部分作为

进一步讲解

\ 这个元字符的意义在于可以用来匹配字符当中的元字符符号。比如说

“anjian*jinglinganjian” 我想要从这个字符里匹配出 “*jingling”这个部分,但是* 这个符号本身也代表这一个元字符,无

法直接匹配,所以这里就需要使用到 \ 这个元字符了,
"\*jingling" 使用这个表达式就能够把 * 号当成是普通的字符进行匹配了

() 小括号 这个元字符应用的比较广泛,他是可以单独把匹配得到的一部分内容提取出来。还

是以上面的字符串作为例子:
“anjian*jinglinganjian” 使用 “an(.+)ling” 这个表达式进行匹配,就是可以匹配得出 jian*jing 这个字符。这个表达式的

含义就是把以an开头ling结尾的中间的部分单独提取出来
使用了这个小括号匹配信息之后,正则会把这个结果作为子匹配结果,在使用代码输出的时候就需要变动下输出的方式
  1. text = "anjian*jinglinganjian"
  2. Dim regEx, Matches, Match '需要用到的几个变量
  3. set regEx = New RegExp '创建一个RegExp对象
  4. regEx.[Global] = TRUE '设置全局可用性为TRUE,在需要更换此属性时,我会提醒你的。
  5. regEx.IgnoreCase = FALSE '设置区分大小写为FALSE,也就是不区分大小写了
  6. regEx.pattern ="an(.+)ling" '设置正则表达式
  7. Set matches = regEx.execute(text) '进行匹配
  8. For Each Match In Matches
  9.     TracePrint   Match.SubMatches(0)  '输出正则的子匹配内容
  10. next
复制代码

Match.SubMatches(0)  这个就是用来输出第一个子匹配内容,要输出第二个子匹配就把0改成1,以此类推。

{n} 这个元字符是用来指定匹配前一个字符的次数的。例如"o{2}"不能与"Bob中的"o"匹配,但是

可以与"foooood"中的前两个o匹配。

[xyz]  这个元字符是表示会匹配这个中括号里的字符的其中一个字符。例如,"[abc]"匹

配"plain"中的"a"。

[^xyz]  这个是[xyz] 的反义匹配,代表这不匹配这括号里的字符。^ 这个符号如果使用在中括

号里,都是代表这反义匹配

[a-z]  这个比较好理解,就是匹配一个范围内的字符。[a-z]就代表这英文的26个字母,[0-9]代

表这数字

\b  这个是用来匹配处于边界的字符的,就是当前一个字符是处于单词的边界的时候才会匹配到

。例如:“anjian\b” 这个表达式可以匹配到 “anjian*jingling” 这个字符串当中的 anjian  但是无法匹配到

“anjianjingling” 这里的 anjian,因为这里的anjian并不是单独的单词,而是连接在anjianjingling 整个单词里的。

\num  这个是用来进行后向引用的。他是配合()小括号用的。在使用了小括号提取子匹配之后

系统会自动为这个子匹配生成一个组号,然后可以用这个规则重复的调用这个组号用来之后的重复匹配
例如:“\b(\w+)\b\s+\1\b” 这个表达式可以用来匹配重复的单词,比如 “anjian anjian” 这样的字符。这表达式里的 \1 就

是调用了(\w+) 这个子匹配

综合小实战


俗话说的好:“实践是检验真理的唯一标准”

学习了正则,那现在我们就来综合所学的知识试着进行一些字符出来
咱们现在就以按键论坛的院刊板块的源网页,来实现把这一页的院刊标题全部匹配出来

院刊板块地址:该链接无法确定安全

1、打开网页之后右键点击页面,选择“查看源代码”,之后就可以看到这个页

面的源代码

2、我们先随便找一个标题的代码来看看,比如这个:
<a href="thread-565244-1-1.html" style="font-weight: bold;color: #EE1B2E" class="xst" >1000多篇按键精华教程,再不下

载我就删掉啦!!</a>
这个就是其中一篇帖子的标题的源代码,其中“thread-565244-1-1.html” 这个是这个帖子的链

接,“1000多篇按键精华教程,再不下载我就删掉啦!! ”这个就是帖子的标题了
我们现在就试着把这个链接和标题給提取出来。

3、首先我们需要同时提取两种字符,所以需要使用到小括号,因为链接和标题

可能是由英文和中文数字构成的,所以就可以直接用 (.+) 来匹配到
链接后面的style开头的一串我们不需要的字符也可以使用 .+来匹配表示
整个分析完毕后我们就可以得出这个表达式了:<a href="(thr.+html).+>(.+)</a>
使用这个表达式就可以把链接和标题分别提取出来了。
  1. text = Lib.网络.获得网页源文件("http://bbs.anjian.com/forum.php?mod=forumdisplay&fid=250") '获取网页源文件
  2. Dim regEx, Matches, Match '需要用到的几个变量
  3. set regEx = New RegExp '创建一个RegExp对象
  4. regEx.[Global] = TRUE '设置全局可用性为TRUE,在需要更换此属性时,我会提醒你的。
  5. regEx.IgnoreCase = FALSE '设置区分大小写为FALSE,也就是不区分大小写了
  6. regEx.pattern ="<a href=""(thr.+html).+>(.+)</a>" '设置正则表达式
  7. Set matches = regEx.execute(text) '进行匹配
  8. For Each Match In Matches
  9.     TracePrint Match.SubMatches(0)'输出帖子链接
  10.     TracePrint Match.SubMatches(1)'输出帖子标题
  11. Next
复制代码



后记


这里只是初步介绍了正则的简单使用方法,意图在于引导大家能够去熟悉正则,并且了解到正则表达式的用处优点。
关于正则其实还有很多比较复杂的语法,这里就不多介绍了,如果童鞋们感兴趣的话可以在百度上搜索到相关的教程。
目前为止正则表达式的基本用法已经介绍的差不多了,在下一次,小编会带领大家一起结合POST技术,来完成

一些实战的小工具,大家敬请期待  
{:5_133:}{:5_133:}

相关院刊:
初窥正则表达式,让处理字符串异常简单
该链接无法确定安全

院刊总目录
该链接无法确定安全




联系我时,请说是在 挂海论坛 上看到的,谢谢!

免费评分

参与人数 1海币 +1 收起 理由
Rooking + 1 奉上小小红包希望笑纳



上一篇:初窥正则表达式,让处理字符串异常简单
下一篇:都速度进来找个对象吧~~
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:[email protected]),本站将立即改正。

1

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
11
交易币
0
沙发
发表于 2015-5-20 23:13:49 | 只看该作者
支持一下楼主,顶楼主,在看看
4中级会员
356/600

356

积分

106

主题

7

听众
已帮网友解决0 个问题
好评
0
贡献
250
海币
4998
交易币
0
板凳
发表于 2015-5-20 23:13:49 | 只看该作者
好东西,谢谢楼主!

1

积分

0

主题

2

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
13
交易币
0
地板
发表于 2015-5-21 03:13:14 | 只看该作者
支持, 海 强烈支持楼主ing……
3正式会员
203/300

203

积分

69

主题

4

听众
已帮网友解决0 个问题
好评
0
贡献
134
海币
7237
交易币
0
5#
发表于 2015-6-25 19:13:10 | 只看该作者
看看能不能给力风骚了

4

积分

1

主题

1

听众
已帮网友解决0 个问题
好评
0
贡献
3
海币
-2
交易币
0
6#
发表于 2015-7-5 23:50:08 | 只看该作者
我告诉自己这个帖子是一定要回的!这是百年难得一见的好贴啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2024-5-14 05:12 , Processed in 0.420354 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

快速回复 返回顶部 返回列表