heroxianf 发表于 2016-4-26 17:08:13

正则获取冒号前面的值[已解决]

本帖最后由 heroxianf 于 2016-4-26 17:41 编辑

姓名:(张三)电话:(1399202141)ERP:(test)

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

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

正则错误尝试: \)(.*?)\(

heroxianf 发表于 2016-4-26 17:15:38

这样貌似可以输出想要的值了。{:face (197):}求检查Local $aDays = "姓名:(张三)电话:(1399202141)ERP:(test)尾部文字"
Local $aa = StringRegExpReplace($aDays, "\(", "")
Local $bb = StringSplit($aa, ")")

    For $i = 1 To $bb
      MsgBox($MB_SYSTEMMODAL, "", "$aDays[" & $i & "] - " & $bb[$i], 2)
    Next

afan 发表于 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), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

heroxianf 发表于 2016-4-26 17:40:37

回复 3# afan

感谢A大,问题解决。

志艺风云 发表于 2016-4-28 17:43:28

如果 姓名:(张三)电话:(1399202141)ERP:(test) 这个是能自定的话不要生成这样的字串。
如果有特殊情况就不对了,试试这个,姓名:(张三(男))电话:(1399202141)ERP:(test)
如果不能自定生成的字串,且只有姓名:、电话:、ERP:等固定字段的话,那么用这些来截取更好。

afan 发表于 2016-4-28 17:57:42

如果 姓名:(张三)电话:(1399202141)ERP:(test) 这个是能自定的话不要生成这样的字串。
如果有特殊情况就不 ...
志艺风云 发表于 2016-4-28 17:43 http://www.autoitx.com/images/common/back.gif


    你这样已经是完全不同的字符串,感觉有点钻牛角尖了… 如果有多种情况,自然有多种情况对应的代码。

dabaiyun 发表于 2016-4-28 20:33:26

学习啦谢谢楼主
页: [1]
查看完整版本: 正则获取冒号前面的值[已解决]