找回密码
 加入
搜索
楼主: tryhi

[系统综合] 【已解决】关于正则的一个小问题:如何跟百度那样进行搜索

 火.. [复制链接]
发表于 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

评分

参与人数 2金钱 +35 贡献 +3 收起 理由
tryhi + 15 + 3 多谢
水木子 + 20 学习啦!

查看全部评分

发表于 2010-11-23 01:49:00 | 显示全部楼层
在一个正则内估计不可能。。。
因为你要顺序可颠倒,空格可有可无。而且还要全匹配。

评分

参与人数 1金钱 +10 收起 理由
tryhi + 10

查看全部评分

发表于 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

评分

参与人数 1金钱 +20 贡献 +1 收起 理由
tryhi + 20 + 1 多谢指点

查看全部评分

 楼主| 发表于 2010-11-23 08:43:24 | 显示全部楼层
感谢楼上以及楼上的所有朋友,我明白了,这个题还是用for比较实际点
发表于 2010-11-23 18:20:40 | 显示全部楼层
学习了!谢谢各位兄弟!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-1 13:04 , Processed in 0.084086 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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