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

[AU3基础] 长久以来,我想提个有趣的问题,不知道有不有同仁遇到过

 火.. [复制链接]
发表于 2014-1-23 11:49:16 | 显示全部楼层
回复  afan


请问A版,如何匹配"任意数字(长度不固定),key" 。如果字符串中存在"21,key", "39,key",如 ...
yhxhappy 发表于 2014-1-23 11:30



    把匹配标志改为3即可 StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)
发表于 2014-1-23 12:06:30 | 显示全部楼层
回复 16# afan


谢谢!
我试了,发现如果要匹配的key在第一个则不会返回,而且返回的数组很长,可以省略吗?
#include <Array.au3>

$sData = "1,aaaa|1,aab|1,hhkk|2,aaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa|"

$a = StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)
_ArrayDisplay($a)
发表于 2014-1-23 12:12:10 | 显示全部楼层
回复  afan


谢谢!
我试了,发现如果要匹配的key在第一个则不会返回,而且返回的数组很长,可以省略 ...
yhxhappy 发表于 2014-1-23 12:06



    我在8#的代码你在$sData首位去掉了“|”,又在关键字$sKey后面多加了“|”,所以,就如此…
#include <Array.au3>

$sData = "|1,aaaa|1,aab|1,hhkk|2,aaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa"

$a = StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)
_ArrayDisplay($a)
发表于 2014-1-23 12:57:57 | 显示全部楼层
回复 18# afan

我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导!
发表于 2014-1-23 13:04:38 | 显示全部楼层
回复  afan

我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导!
yhxhappy 发表于 2014-1-23 12:57



    那就是完全匹配啊,我在13#不是已经回复过了…
#include <Array.au3>

$sData = "|1,aaaa|1,aab|1,hhkk|2,aaaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa"

Local $a = StringRegExp($sData, '(?mi)\|(\d+),' & $sKey & '(?=\|)', 3)
_ArrayDisplay($a)
发表于 2014-1-23 16:17:53 | 显示全部楼层
非常大的数组的话,逐个遍历是非常没有效率的,有特定的算法来实现高效的数组搜索,例如折半查询法等等。
发表于 2014-1-23 17:38:57 | 显示全部楼层
本帖最后由 nmgwddj 于 2014-1-23 17:43 编辑

回复 1# txm888


    http://blog.csdn.net/likezhaobin/article/details/6908257
    可看看这几种算法,在高级语言中谈到的比较多。可以在排序算法中找到一些灵感。

    还有S大提到的二分法查找
    http://www.enet.com.cn/eschool/video/autohtml/310/1261/31.shtml
 楼主| 发表于 2014-1-24 18:41:47 | 显示全部楼层
回复 21# skyfree


    感谢S大,很好地很强的见解
 楼主| 发表于 2014-1-24 18:42:35 | 显示全部楼层
回复 22# nmgwddj


    你们都很精通,向你学习了,感谢参与
发表于 2014-1-24 21:07:08 | 显示全部楼层
回复 23# txm888


    参照22楼,折半法比较基础常用。
发表于 2014-2-8 22:44:12 | 显示全部楼层
折半未必最好,黄金分割可以减少至少一半的计算次数
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-24 02:35 , Processed in 0.068887 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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