afan 发表于 2014-1-23 11:49:16

回复afan


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


    把匹配标志改为3即可 StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)

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

afan 发表于 2014-1-23 12:12:10

回复afan


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


    我在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)

yhxhappy 发表于 2014-1-23 12:57:57

回复 18# afan

我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导!

afan 发表于 2014-1-23 13:04:38

回复afan

我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导!
yhxhappy 发表于 2014-1-23 12:57 http://www.autoitx.com/images/common/back.gif


    那就是完全匹配啊,我在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)

skyfree 发表于 2014-1-23 16:17:53

非常大的数组的话,逐个遍历是非常没有效率的,有特定的算法来实现高效的数组搜索,例如折半查询法等等。

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

txm888 发表于 2014-1-24 18:41:47

回复 21# skyfree


    感谢S大,很好地很强的见解

txm888 发表于 2014-1-24 18:42:35

回复 22# nmgwddj


    你们都很精通,向你学习了,感谢参与

skyfree 发表于 2014-1-24 21:07:08

回复 23# txm888


    参照22楼,折半法比较基础常用。

netegg 发表于 2014-2-8 22:44:12

折半未必最好,黄金分割可以减少至少一半的计算次数
页: 1 [2]
查看完整版本: 长久以来,我想提个有趣的问题,不知道有不有同仁遇到过