itljl 发表于 2010-7-18 22:54:17

[已解决]谁能解释一下这个正则?

本帖最后由 itljl 于 2010-8-18 12:29 编辑


        $moviename = StringRegExp($HTMLSource, '<a href=".*" class="ulink">(.*)</a>', 3)
        $movielink = StringRegExp($HTMLSource, '<a href="(.*)" class="ulink">.*</a>', 3)
        $info = StringRegExp($HTMLSource, '◎片 名(.*)</td>', 3)
谢谢。。。
可能这里面主要就是(.*)与.*的区别

风行者 发表于 2010-7-18 23:06:08

()里面的就是返回的数据

pusofalse 发表于 2010-7-18 23:29:01

.*只是匹配任意字符任意次,不包含换行符(?)。
(.*)匹配任意字符任意次,并将匹配到的内容放到编号为n的分组里,方便之后用\1、\2引用。
具体还要请afan兄来帮忙解释~

afan 发表于 2010-7-18 23:52:11

回复 3# pusofalse


    老大,你寥寥2句就解释完了,要我解释得半天,还不定说清楚…

pusofalse 发表于 2010-7-19 02:04:32

回复 4# afan


    只是我自己的理解,我能够知道.*、(.*)是什么意思,但组织不起通俗易懂的语言,也想不出例子说明。
单看“匹配”一词,我在学习正则时就已经摸不着头脑了。
尤其赞佩afan兄的正则运用,如果有人能够用通俗易懂的语言并有例子相佐来说明正则甚至出一篇系统的正则教程的话,我想此人一定会是afan兄了~ ^_^

autoit3CN 发表于 2010-7-19 06:18:52

极其赞同楼上的客观评价!希望afan能抽空写一篇《正则基础入门与提高》,基础部分可以借鉴论坛已有资料,同时希望融入斑竹独特的实战应用经验用通俗易理解又不失严谨的表达方式去阐述巧用正则的要领,相信论坛能有此等精品文章定能将更多的菜鸟带入正则殿堂;同时后半部分建议着重于正则的高级应用,尤其是一些非常抽象诲涩难懂的精品表达式的剖析就更有学习借鉴意义了。

水木子 发表于 2010-7-19 09:04:57

的确!正则表达式,很多新人都因为其复杂的表达式而望而生畏。

恰恰 afan前辈在这方面运用得是游刃有余(相信大家已经见识过了,不用多说)

如果前辈真能出正则教程,我第一个支持。{:face (301):}

yarsye 发表于 2010-7-19 09:09:29

A fan!A fan!A fan!A fan!A fan!

lchl0588 发表于 2010-7-19 09:11:34

呵呵,P版在三楼已做出说明,我也通过查找自个搜集汇编成帮助的正则,下面是偶的见解:$moviename = StringRegExp($HTMLSource, '<a href=".*" class="ulink">(.*)</a>', 3)
                                                ;<>=开始结束
                                                 ;内容是a href="除了换行以外的所有" class="ulink"                              
                                                   ;(.*)=获取"除了换行以外的所有" 的数组
                                                   ;/a=匹配字符a
                                             
      $movielink = StringRegExp($HTMLSource, '<a href="(.*)" class="ulink">.*</a>', 3)
      $info = StringRegExp($HTMLSource, '◎片 名(.*)</td>', 3)

3mile 发表于 2010-7-19 09:11:40

同楼上。
正则式的抽象表达方式非常难以理解,并且难以阅读。
如果没有实例,相信很多人都会晕头转向。
AFAN版主如果真能出教程指导的话,真是吾辈之福

thesnow 发表于 2010-7-19 09:16:39

一群人在这里相互夸赞,这是一种什么景象?
{:1_413:}

上面每人写一篇,我提供论坛币赞助.(自己的积分)

afan 发表于 2010-7-19 11:29:32

各位都是身怀绝技的高手,我岂敢班门弄斧~! {:face (113):}
本人也就略懂一点正则的皮毛而已,你们玩的都是些高层次的东西(当然也包括正则的高端运用),各位高手、前辈就不要拿我做点心啦~!
要不就如帅哥所说,你们每人写一篇,我负责整理,把你们专业的词汇转换成我等菜鸟易于理解的“方言”,然后共同来消费帅哥的私房钱~~ 如何? {:face (301):}

itljl 发表于 2010-7-19 12:11:25

回复 12# afan


    A版写吧,就看你了,我建议第一章就写这个函数怎么用。
因为正规的规则就算知道了,在AU3中这个函数应该怎么用,怎么获得数据,获得的数据是怎样存在的,我想很多人都不知道。
我开始始终看不懂,后来看实便才知道,原来返回的值是在数组中的。。。

一定要由浅入深啊。。

afan 发表于 2010-7-19 12:40:12

本帖最后由 afan 于 2010-7-19 12:47 编辑

回复 13# itljl


    可能是对其后面的标志不太理解吧,可以看看以下这个例子
;====================示例 0, 返回 1(匹配) 或 0(不匹配)
$x = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 0)
If $x = 1 Then
        MsgBox(0, '正则测试 标志值 0 ', '匹配')
Else
        MsgBox(0, '正则测试 标志值 0 ', '不匹配')
EndIf


;====================示例 1, 返回匹配项目的数组.并使用偏移量
$nOffset = 1
While 1
        $array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 1, $nOffset)
        If @error = 0 Then
                $nOffset = @extended
        Else
                ExitLoop
        EndIf
        For $i = 0 To UBound($array) - 1
                MsgBox(0, '正则测试 标志值 1 - ' & $i, $array[$i])
        Next
WEnd


;==================示例 2, 返回包括完整匹配的数组.(Perl/ PHP 样式).
$array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 2)
For $i = 0 To UBound($array) - 1
        MsgBox(0, '正则测试 标志值 2 - ' & $i, $array[$i])
Next


;==================示例 3, 返回全局匹配的数组.
$array = StringRegExp('<test>a</test> <test>b</test> <test>c</Test>', '<(?i)test>(.*?)</(?i)test>', 3)
For $i = 0 To UBound($array) - 1
        MsgBox(0, '正则测试 标志值 3 - ' & $i, $array[$i])
Next


;==================示例 4, 返回包括完整匹配(Perl/ PHP 样式)和全局匹配的数组.
$array = StringRegExp('F1oF2oF3o', '(F.o)*?', 4)
For $i = 0 To UBound($array) - 1
        $match = $array[$i]
        For $j = 0 To UBound($match) - 1
                MsgBox(0, '正则测试 标志值 4 - ' & $i & ',' & $j, $match[$j])
        Next
Next

boyhong 发表于 2010-7-19 12:42:09

本帖最后由 boyhong 于 2010-7-19 12:45 编辑

个人崇拜afan中~~~杠杠的~~
页: [1] 2
查看完整版本: [已解决]谁能解释一下这个正则?