找回密码
 加入
搜索
查看: 6512|回复: 13

[AU3基础] 【已解决】请正则高手进来一下

 火.. [复制链接]
发表于 2010-12-20 13:54:48 | 显示全部楼层 |阅读模式
本帖最后由 elexy 于 2010-12-20 17:41 编辑
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 50 56 c0 00 08 ...... VMware Virtual Ethernet Adapter for VMnet8
0x3 ...d8 5d 4c 70 db b3 ...... Realtek RTL8139 Family PCI Fast Ethernet NIC - 数据包计划程序微型端口
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.1.1     192.168.1.7          20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1          1
      192.168.1.0    255.255.255.0      192.168.1.7     192.168.1.7          20
      192.168.1.7  255.255.255.255        127.0.0.1       127.0.0.1          20
    192.168.1.255  255.255.255.255      192.168.1.7     192.168.1.7          20
    192.168.128.0    255.255.255.0    192.168.128.1   192.168.128.1          20
    192.168.128.1  255.255.255.255        127.0.0.1       127.0.0.1          20
  192.168.128.255  255.255.255.255    192.168.128.1   192.168.128.1          20
        224.0.0.0        240.0.0.0      192.168.1.7     192.168.1.7          20
        224.0.0.0        240.0.0.0    192.168.128.1   192.168.128.1          20
  255.255.255.255  255.255.255.255      192.168.1.7     192.168.1.7          1
  255.255.255.255  255.255.255.255    192.168.128.1   192.168.128.1          1
Default Gateway:       192.168.1.1
===========================================================================
Persistent Routes:
  None
以上一段文本,如果能准确获取到 Default Gateway:       后面的 网关地址 192.168.1.1,反复试都不行,请高手指点一下正则公式。

评分

参与人数 1金钱 +20 收起 理由
水木子 + 20 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-12-20 14:12:18 | 显示全部楼层
Default Gateway:\h*([^\r]+)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-12-20 14:14:09 | 显示全部楼层


\s(\d+\.\d+\.\d+\.\d+)\r

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2010-12-20 15:19:07 | 显示全部楼层
回复 3# 星雨朝霞
我也刚学正则,不知道理解是否正确,
\s(\d+\.\d+\.\d+\.\d+)\r中的括号是为了分组吗 ?没有括号,得到的结果也相同.
发表于 2010-12-20 15:31:49 | 显示全部楼层
回复 2# 水木子
老大,你的正则我不明白?能给解释一下吗.
Default Gateway:\h*([^\r]+)
Default Gateway:匹配本身
\h*  匹配任意数量的水平空白字符
[^\r] 排除回车符,就是在一行内进行正则模式匹配
最后的 + 是匹配什么呀?是"匹配前面的空白字符吗"如果字样,得到的结果应该是
Default Gateway:        192.168.1.1
可结果为什么只有IP地址啊!
发表于 2010-12-20 16:09:13 | 显示全部楼层
本帖最后由 水木子 于 2010-12-20 16:10 编辑

回复 5# newuser
[^\r] 排除回车符,就是在一行内进行正则模式匹配
这一句你理解错了!

让我们来解读一下这段愚笨的表达式!

Default Gateway 匹配这段字符本身
\h*  后面可以接0---N个空白。
([^\r]+) 匹配不是回车符的字符N个!

这样一来就将空白后面的所有字符取出来了,需要注意的是 “()” 这个小括号。

我这个表达式不严谨,真正匹配IP地址的表达式不是这样的,不要误解了。

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-12-20 16:36:18 | 显示全部楼层
本帖最后由 都市浪子666 于 2010-12-20 17:00 编辑
回复  newuser 这一句你理解错了!

让我们来解读一下这段愚笨的表达式!

Default Gateway 匹配这段字 ...
水木子 发表于 2010-12-20 16:09



    谢谢超版这样详细的讲解正则,这样方便了我们这些菜鸟学习正则
发表于 2010-12-20 16:42:50 | 显示全部楼层
回复 7# 都市浪子666

方便我们这些菜单? 呵呵!开个玩笑啦!

其实我对正则也只是一知半解,这方面afan版主是专家。
发表于 2010-12-20 17:01:41 | 显示全部楼层
回复 8# 水木子
一下没注意打错了字,,丢大发了
发表于 2010-12-20 17:21:59 | 显示全部楼层
本帖最后由 星雨朝霞 于 2010-12-20 17:26 编辑

回复 4# newuser


    没有括号!你会发现匹配出现的结果前面多了个空格...

对于正则我也是刚学...
对于我给出的表达式,我的理解是
前面匹配一个空格,后面匹配一个换行,取出中间的三个点前后的数字
可能我理解不当!自己理解吧...我只知道这样能达到目的而以.

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2010-12-20 17:41:12 | 显示全部楼层
水木子的方法可行,避免了前面有N个空格的问题!!!!!!
发表于 2010-12-20 18:02:05 | 显示全部楼层
看到高手了。高手一出马就是不一样啊。嘿嘿
发表于 2010-12-21 08:34:34 | 显示全部楼层
回复 6# 水木子
老实说,我还是有点不明白?关键点是为什么加上 (),Default Gatway就不匹配了?
不加,匹配的结果就是:   Default Gateway   192.168.1.1  .
我将[^\r]改成[^\s],结果是一样的,我也刚学正则,应该说连门在哪都不知道,所以我看到每一个正则例子,都试图让自己能读明白,该帖子的另一个正则相对好理解,感觉他是针对192.168.1.1前后的情况进行正则匹配,而老大的正则思路就不清楚,怎么想到这么写?我说的不清楚,不知道老大能不能明白?呵呵,我自己都糊涂了.
关键在于(),为什么有他:Default  Gateway:  加上后面的水平字符就不匹配了呢?
发表于 2010-12-21 09:14:55 | 显示全部楼层
本帖最后由 水木子 于 2010-12-21 10:53 编辑

回复 13# newuser
你暂时这样理解吧!加上()意思是我想得到括号内的内容,而()以外的我不要。

今后的练习中你会慢慢的理解其用途!组。

让我们来看一个简单的例子,你应该就能理解了。


源字符串:abcdef12345    54321   abcdef
表达式:\h(\d+)\h
结果:54321

简单的解读下:两边是空白符,中间是数字。
在这里如果去掉()那结果应该是 空白数字+空白
正因为有了()只取中间的数字,所以才去掉了两边的空白符,返回纯数字结果。
这样说你明白了吗?

当然就单单看某一段源字符串,表达式可以是多种多样的。
就拿上面的例子来说,表达式:\b(?:\d+)\b 这样也是可以的,从某种角度上来说这样比前者更好,至于为什么今后可以慢慢去理解
往往我们可见的源字符是有限了,所以表达一定要严谨,尽可能的考虑到字符串的变化。

我在这里谈这些实在是班门弄斧了,还请正则高手们多多讲解一些技巧啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1贡献 +2 收起 理由
afan + 2

查看全部评分

发表于 2010-12-21 11:08:50 | 显示全部楼层
回复 14# 水木子
非常感谢老大的解释,确实得在实践中细细琢磨!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 23:34 , Processed in 0.089999 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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