找回密码
 加入
搜索
查看: 2393|回复: 6

[效率算法] 正则获取冒号前面的值[已解决]

  [复制链接]
发表于 2016-4-26 17:08:13 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2016-4-26 17:41 编辑
姓名:(张三)电话:(1399202141)ERP:(test)


最终我是想整理成:
姓名:张三
电话:1399202141
ERP:test

我用正则 \((.*?)\) 抓取出货号里的内容,但是冒号前面的不能抓全。

正则错误尝试: \)(.*?)\(
 楼主| 发表于 2016-4-26 17:15:38 | 显示全部楼层
这样貌似可以输出想要的值了。  求检查
Local $aDays = "姓名:(张三)电话:(1399202141)ERP:(test)尾部文字"
Local $aa = StringRegExpReplace($aDays, "\(", "")
Local $bb = StringSplit($aa, ")")

    For $i = 1 To $bb[0]
        MsgBox($MB_SYSTEMMODAL, "", "$aDays[" & $i & "] - " & $bb[$i], 2)
    Next
发表于 2016-4-26 17:17:12 | 显示全部楼层
### 友情提示:本脚本由 Au3.REHelper 于 2016/04/26 17:16 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $sSource = '姓名:(张三)电话:(1399202141)ERP:(test)'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?<=^|\))(.+?:)\((.+?)\)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中[0]元素为: ' & $aSRE[0])
_ArrayDisplay($aSRE, UBound($aSRE))

评分

参与人数 1金钱 +10 收起 理由
heroxianf + 10

查看全部评分

 楼主| 发表于 2016-4-26 17:40:37 | 显示全部楼层
回复 3# afan

感谢A大,问题解决。
发表于 2016-4-28 17:43:28 | 显示全部楼层
如果 姓名:(张三)电话:(1399202141)ERP:(test) 这个是能自定的话不要生成这样的字串。
如果有特殊情况就不对了,试试这个,姓名:(张三(男))电话:(1399202141)ERP:(test)
如果不能自定生成的字串,且只有姓名:、电话:、ERP:等固定字段的话,那么用这些来截取更好。
发表于 2016-4-28 17:57:42 | 显示全部楼层
如果 姓名:(张三)电话:(1399202141)ERP:(test) 这个是能自定的话不要生成这样的字串。
如果有特殊情况就不 ...
志艺风云 发表于 2016-4-28 17:43



    你这样已经是完全不同的字符串,感觉有点钻牛角尖了… 如果有多种情况,自然有多种情况对应的代码。
发表于 2016-4-28 20:33:26 | 显示全部楼层
学习啦谢谢楼主
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-22 03:04 , Processed in 0.076634 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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