hanz_200 发表于 2012-11-23 21:57:26

[已解决] 求正则表达式

本帖最后由 hanz_200 于 2012-11-24 10:21 编辑

内容:
V:8086 D:2E10 S:304717AA B:0 E:00 F:0 I:00 N:- C:06 U:00 P:00 R:03

提取字母后面的内容后保存到相应的数组,求指导!

字母N后面的内容不需要提取!

annybaby 发表于 2012-11-23 22:13:46

回复 1# hanz_200

一句代码都没自己写??伸手党??{:face (394):}

hanz_200 发表于 2012-11-23 22:22:07

水平有限,原来用分隔符分离,但是感觉效率有点差,正则一看就感觉头疼,所以求助!{:face (239):}

annybaby 发表于 2012-11-23 22:34:49

回复 3# hanz_200

你的描述很不清楚,我估计应该是:
提取冒号与空格之间的数字或字母吧??

afan 发表于 2012-11-23 22:37:30

:([^-\s]+)

annybaby 发表于 2012-11-23 22:42:56

回复 1# hanz_200

### 友情提示:本脚本由 Au3.REHelper 于 2012/11/23 22:34 自动生成,不保证其正确性,请自行测试 ###
#include <Array.au3>
Local $Str = 'V:8086 D:2E10 S:304717AA B:0 E:00 F:0 I:00 N:- C:06 U:00 P:00 R:03'
MsgBox(0, '原字符串', $Str)
Local $Test = StringRegExp($str, '(?<=:)[\w]+', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中元素为: ' & $Test)
_ArrayDisplay($Test, UBound($Test))

hanz_200 发表于 2012-11-24 10:21:14

感谢两位的回答,没啥编程基础,看正则太头疼!!

muxingwan 发表于 2012-11-24 21:53:27

回复 6# annybaby


    6楼,这个[\w]+和[\w]*能说说为什么取的结果不一样吗?一天了都没有找出原因.为什么不能用[\w]*只能用[\w]+

annybaby 发表于 2012-11-24 22:28:51

回复 8# muxingwan

你分别用两个来匹配,然后对比结果就明白了

muxingwan 发表于 2012-11-30 13:31:57

本帖最后由 muxingwan 于 2012-11-30 13:37 编辑

就是用二种方式做了,发现不一样,又不明白为什么,才上来问的,高手指点一二吧,我个人认为二者应该是一样的结果.+号和*号的区别我知道,但是结果好像不是1以上和0个以上的区别

muxingwan 发表于 2012-12-2 21:22:04

回复 9# annybaby


    就是用二种方式做了,发现不一样,又不明白为什么,才上来问的,高手指点一二吧,我个人认为二者应该是一样的结果.+号和*号的区别我知道,但是结果好像不是1以上和0个以上的区别

annybaby 发表于 2012-12-2 21:37:08

回复 11# muxingwan


   说对了,结果就是1以上和0以上的区别~~

如果你找到了不是的证据,那么恭喜你,你发现它的BUG了~

muxingwan 发表于 2012-12-3 09:55:46

回复 12# annybaby


V:8086 D:2E10 S:304717AA B:0 E:00 F:0 I:00 [\w]*匹配时在N:- 后都匹配不了,



V:8086 D:2E10 S:304717AA B:0 E:00 F:0 I:00 C:06 U:00 P:00 R:03 [\w]+匹配时把N:- 去掉了


有点头大

annybaby 发表于 2012-12-3 11:28:51

回复 13# muxingwan

前一个可以匹配的,后一个不可以,这就是它们的区别,请再认真检查~~

muxingwan 发表于 2012-12-3 12:22:40

回复 14# annybaby


   我用的 EmEditor里的正则工具查的,看来是EmEditor的着色问题
页: [1] 2
查看完整版本: [已解决] 求正则表达式