求一个正则表达[已解决]
本帖最后由 1361739590 于 2016-5-5 15:43 编辑有一个字串:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21
字串也可能是下面的,少一个 , :
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
每个逗号之间可以是任意字符(除 , 以外),也可以是空字符,求怎么匹配 10 和 11 的内容。 用StringSplit应该比好好解决吧 (?m)(?:.*?,){9}(.*?)\,(.*?)\, #include <Array.au3>
Local $file = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21" ;你的字符串
local $string = StringRegExp($file, "10|11", 3)
_ArrayDisplay($string) 分割更简单啊Local $sSource = '1,2,3,4,5,6,7, ,9,10,11,12,13,14,15,16,17,18,19,20,21'
Local $aSRE = StringSplit($sSource, ',')
If $aSRE > 11 Then MsgBox(0, '', $aSRE & @LF & $aSRE) 回复 3# haijie1223
谢谢。
想问一下:
1.(?m) 这个是 匹配整个字符串数据内的换行符么?这个匹配实例可以举一个看看么?
2.是不是说 正则里面有一组 () 就会有一个匹配结果,(?:....)是不记录这个结果,你给的有3个(),除了第一问的不懂,是不是另外2个 () 如果有匹配的都会返回结果?
3.\, 这个为什么要一个 \ ?
4.(.*?)\,这个为什么要 2 遍?
谢谢。 回复 5# afan
谢谢。
最后目的是想替换第10和11的内容,
如果分割可能会得到 空字符 ,这个就不知道怎么替换了。
或者用$aSRE&','&$aSRE...自己重新组合也行,没想用,
顺便想学习一下正则,所以提出了这个问题。 回复 6# 1361739590
afan版主回贴了竟然不问他,他是正则大牛!不对,是正则之神!不对,是正则神牛!不对。。。算啦~
1、还是看看帮助吧,(?m) 行内匹配模式,^和$匹配换行符内的数据。 刚才我写的那个可以不用这个行内匹配。
2、?:是匹配到了但是不捕获,不分配分组,返回结果中不显示。
3、\是转义符号,这里可以不用。
4、两遍是因为要匹配两个地方,10和11 去掉没用的项目,可以这么写(?:.*?,){9}(.*?),(.*?), 回复1361739590
afan版主回贴了竟然不问他,他是正则大牛!不对,是正则之神!不对,是正则神牛 ...
haijie1223 发表于 2016-5-5 14:16 http://www.autoitx.com/images/common/back.gif
除了神什么油其它的我给满分 {:face (125):} 回复 8# haijie1223
谢谢。 回复 10# afan
经常看到回答正则问题。这里想问一下,这个可以用 StringRegExpReplace 这个函数来替换第10里面的内容么? 回复 10# afan
? 匹配前面的子表达式零次或一次
想问一下下面的问题:
1..*是指除“\n”之外的任何单个字符零次或多次么?包括 , 这个符号吧。
2.(.*?), 前面的子表达式是指 .* 这个么?是的话这个零次或一次怎么理解呢?
3. 其实就是想知道 这样写 (.*?), 能匹配1, 或 2, 或 3, ..
(.*), 这样写只能匹配 1,2,3,.....20 这一个结果, 就是这个?的原理。 回复afan
经常看到回答正则问题。这里想问一下,这个可以用 StringRegExpReplace 这个函数来替 ...
1361739590 发表于 2016-5-5 14:40 http://www.autoitx.com/images/common/back.gif
当然可以 回复afan
? 匹配前面的子表达式零次或一次
想问一下下面的问题:
1..*是指除“\n”之 ...
1361739590 发表于 2016-5-5 15:17 http://www.autoitx.com/images/common/back.gif
A1, 是的
A2, ?在*、+后面不是0或1次,而是在符合匹配右边的条件下最小字符量
A3, 同A2
页:
[1]
2