heroxianf 发表于 2016-10-26 21:18:39

正则如何得出匹配结果的顺序[已解决]

本帖最后由 heroxianf 于 2016-10-28 12:39 编辑

示例:
我要苹果7、今天要去美国一定要买到。

正则
我|美国|苹果7

我要如何处理才能得到匹配的结果是   我——美国——苹果7
明确的知道我 排第一、美国 排第二、苹果7 并没有排第三

tubaba 发表于 2016-10-27 17:21:44

匹配了再用stringformat处理一下

Alam 发表于 2016-10-27 17:47:30

又要匹配,又要重新排序,没有通用性吧.Local $str = '我要苹果7、今天要去美国一定要买到。'
$sRe = StringRegExpReplace($str, '.*(我).*(苹果7).*(美国).*', '\1--\3--\2')
MsgBox(0, '', $sRe)

heroxianf 发表于 2016-10-27 18:01:56

回复 3# Alam


    也许是我表达的不清楚,我最终是想知道这句里   苹果7、我、美国 在整句里的位置,不是重新排列它们。
对于这句话(我在美国前面、美国在苹果7前面 条件符合)

我去美国买苹果7.   这句是我想要的结果。
我要苹果7、今天要去美国一定要买到。这句就不是。

tubaba 发表于 2016-10-27 19:28:14

.*(我).*(美国).*(苹果7).*

匹配了那就是你想的結果,不匹配了,那這句自然也就不是你想要的啊.三樓說的沒錯呀

heroxianf 发表于 2016-10-27 21:42:09

回复 5# tubaba


    回来运行了一下,确实有点像,在仔细推敲一下。谢谢

haijie1223 发表于 2016-10-27 22:27:19

If StringRegExp($aStr[$i], '我.*?美国.*?苹果7') Then        MsgBox(0, 0,True)

heroxianf 发表于 2016-10-27 22:50:57

回复 7# haijie1223


    谢谢海大,就是这个意思。Alam兄的还没搞明白什么原理{:face (197):}

Alam 发表于 2016-10-28 17:57:50

回复 8# heroxianf

...............无语
你的要求是作"判断",而不是作"匹配"或"得出"

heroxianf 发表于 2016-10-28 21:21:06

回复 9# Alam


    你的用起来可以灵活设置关键词,就是没怎么明白原理。谢谢了哈
页: [1]
查看完整版本: 正则如何得出匹配结果的顺序[已解决]