找回密码
 加入
搜索
查看: 2320|回复: 9

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

  [复制链接]
发表于 2016-10-26 21:18:39 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2016-10-28 12:39 编辑

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

正则
我|美国|苹果7

我要如何处理才能得到匹配的结果是   我——美国——苹果7
明确的知道  我 排第一、美国 排第二、苹果7 并没有排第三
发表于 2016-10-27 17:21:44 | 显示全部楼层
匹配了再用stringformat处理一下
发表于 2016-10-27 17:47:30 | 显示全部楼层
又要匹配,又要重新排序,没有通用性吧.
Local $str = '我要苹果7、今天要去美国一定要买到。'
$sRe = StringRegExpReplace($str, '.*(我).*(苹果7).*(美国).*', '\1--\3--\2')
MsgBox(0, '', $sRe)

评分

参与人数 1金钱 +10 收起 理由
heroxianf + 10 确实有点像我要的结果~

查看全部评分

 楼主| 发表于 2016-10-27 18:01:56 | 显示全部楼层
回复 3# Alam


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

美国苹果7.   这句是我想要的结果。
我要苹果7、今天要去美国一定要买到。  这句就不是。
发表于 2016-10-27 19:28:14 | 显示全部楼层
.*(我).*(美国).*(苹果7).*

匹配了那就是你想的結果,不匹配了,那這句自然也就不是你想要的啊.三樓說的沒錯呀
 楼主| 发表于 2016-10-27 21:42:09 | 显示全部楼层
回复 5# tubaba


    回来运行了一下,确实有点像,在仔细推敲一下。谢谢
发表于 2016-10-27 22:27:19 | 显示全部楼层
If StringRegExp($aStr[$i], '我.*?美国.*?苹果7') Then        MsgBox(0, 0,True)
 楼主| 发表于 2016-10-27 22:50:57 | 显示全部楼层
回复 7# haijie1223


    谢谢海大,就是这个意思。  Alam兄的还没搞明白什么原理
发表于 2016-10-28 17:57:50 | 显示全部楼层
回复 8# heroxianf

...............无语
你的要求是作"判断",而不是作"匹配"或"得出"
 楼主| 发表于 2016-10-28 21:21:06 | 显示全部楼层
回复 9# Alam


    你的用起来可以灵活设置关键词,就是没怎么明白原理。谢谢了哈
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 14:40 , Processed in 0.085447 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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