3mile 发表于 2010-11-22 23:56:36

本帖最后由 3mile 于 2010-11-23 00:03 编辑

回复 13# tryhi
如果只是不要循环的话,用个另类的方法:
#include <array.au3>
$x1 = 'aaABCDEFG';用来搜索的字符串1
$x2 = 'aaaaaaabbbbbbbABCDFG';用来搜索的字符串2
$c = "D E FG";检索的字符
MsgBox(0, 0, qq($x1, $c));测试
MsgBox(0, 0, qq($x2, $c));测试
Func qq($a, $b)
        $c1 = StringSplit($b, ' ')
        $number = StringLen($a) - StringLen(StringStripWS($b, 8))
        $b = '(?i)' & _ArrayToString($c1, '|', 1)
        $temp = StringLen(StringRegExpReplace($a, $b, ''))
        If $temp > $number Then
                Return False
        Else
                Return True
        EndIf
EndFunc   ;==>qq

kxing 发表于 2010-11-23 01:49:00

在一个正则内估计不可能。。。
因为你要顺序可颠倒,空格可有可无。而且还要全匹配。

afan 发表于 2010-11-23 02:27:11

本帖最后由 afan 于 2010-11-23 02:37 编辑

这个估计还是 循环用 StringInStr() 判断比较简单,正则反倒麻烦了,还需转义字符等。

MsgBox(0, 0, _SsCK('ABCDEFG', 'D A E'))
MsgBox(0, 0, _SsCK('ABCDFG', 'D A E'))

Func _SsCK($Str_y, $str_s)
        Local $sR = StringRegExp($str_s, '\H+', 3)
        For $i = 0 To UBound($sR) - 1
                If Not StringInStr($Str_y, $sR[$i]) Then Return False
        Next
        Return True
EndFunc   ;==>_SsCK

tryhi 发表于 2010-11-23 08:43:24

感谢楼上以及楼上的所有朋友,我明白了,这个题还是用for比较实际点

19377708 发表于 2010-11-23 18:20:40

学习了!谢谢各位兄弟!
页: 1 [2]
查看完整版本: 【已解决】关于正则的一个小问题:如何跟百度那样进行搜索