heavenm 发表于 2019-8-15 20:30:43

正则可以指定匹配某串字符串指定的次数嘛?

#include <Array.au3>
Local $sSource = '43,137,f0e9e9|59,154,f0f1f2|25,175,6C7079|34,137,6B7079|76,79,6A6F78|45,145,6B7079|75,107,6A6F79|66,132,6B7079|47,153,6B707A|48,198,6B7179|33,175,6C7079|43,137,f0e9e9|59,154,f0f1f2|25,175,6C7079|34,137,6B7079|76,79,6A6F78|45,145,6B7079|75,107,6A6F79|66,132,6B7079|47,153,6B707A|48,198,6B7179|33,175,6C7079'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '([^\|]+)', 3)

MsgBox(0, '', _ArrayToString($aSRE, "|", 0, 3))
向这样,只要前3段

heavenm 发表于 2019-8-15 20:31:52

([^\|]+)\|?{3}
这样子写好像不行!

afan 发表于 2019-8-15 20:32:48

上一贴你只要将 括号后面加上 ?: 即可,谁知我写好了,你却删了贴

afan 发表于 2019-8-15 20:33:54

(?:[^\|]+\|){3}

heavenm 发表于 2019-8-15 21:04:03

afan 发表于 2019-8-15 20:32
上一贴你只要将 括号后面加上 ?: 即可,谁知我写好了,你却删了贴

{:1_203:}我怕我提问的方法不对,重新写了个帖子!我错了

heavenm 发表于 2019-8-15 21:07:02

afan 发表于 2019-8-15 20:33


那能不能用StringRegExpReplace 来直接输出结果?
最近afan很活跃啊

heavenm 发表于 2019-8-15 21:09:03

本帖最后由 heavenm 于 2019-8-15 21:12 编辑

StringRegExpReplace($sSource, '((?:[^\|]+\|){3}).*', '\1')
噢!这样子就OK了,太厉害了,基本上afan正则小超人43,137,f0e9e9|59,154,f0f1f2|25,175,6C7079|
不过输出的结果后面多了个|能去掉么

afan 发表于 2019-8-15 21:13:10

heavenm 发表于 2019-8-15 21:09
StringRegExpReplace($sSource, '((?:[^\|]+\|){3}).*', '\1')
噢!这样子就OK了,太厉害了,基本上afan正则 ...

这样很可以~你才是超人,我虽然我也飞,但是是鸟人 {:face (306):}

heavenm 发表于 2019-8-15 21:14:15

((?:[^\|]+\|??){2}).*
完美,感谢afan,成功搞定!

heavenm 发表于 2019-8-15 21:21:28

afan 发表于 2019-8-15 21:13
这样很可以~你才是超人,我虽然我也飞,但是是鸟人
别闹,我是个屌丝,你也有弄手机项目.
需要手机不
做项目的话,用一些屏幕不怎么正常,但是功能正常的手机特别省钱
象便宜的小米 note2才80块钱,做手机很划算哈哈,就是麻烦点

afan 发表于 2019-8-15 21:24:05

heavenm 发表于 2019-8-15 21:21
别闹,我是个屌丝,你也有弄手机项目.
需要手机不
做项目的话,用一些屏幕不怎么正常,但是功能正常的手机 ...

好说,要手机一定找你帮忙~~

在微象打工的仔 发表于 2019-8-17 14:59:55

各位老师的正则功底很厚实

tarcy118 发表于 2019-8-19 00:12:32

不错支持一下
页: [1]
查看完整版本: 正则可以指定匹配某串字符串指定的次数嘛?