1361739590 发表于 2016-5-5 12:19:39

求一个正则表达[已解决]

本帖最后由 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 的内容。

zghwelcome 发表于 2016-5-5 12:41:52

用StringSplit应该比好好解决吧

haijie1223 发表于 2016-5-5 12:59:41

(?m)(?:.*?,){9}(.*?)\,(.*?)\,

heroxianf 发表于 2016-5-5 13:10:12

#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)

afan 发表于 2016-5-5 13:39:56

分割更简单啊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)

1361739590 发表于 2016-5-5 13:46:42

回复 3# haijie1223


    谢谢。
想问一下:
1.(?m) 这个是 匹配整个字符串数据内的换行符么?这个匹配实例可以举一个看看么?
2.是不是说 正则里面有一组 () 就会有一个匹配结果,(?:....)是不记录这个结果,你给的有3个(),除了第一问的不懂,是不是另外2个 () 如果有匹配的都会返回结果?
3.\,   这个为什么要一个 \   ?
4.(.*?)\,这个为什么要 2 遍?
谢谢。

1361739590 发表于 2016-5-5 13:50:19

回复 5# afan


    谢谢。
最后目的是想替换第10和11的内容,
如果分割可能会得到 空字符 ,这个就不知道怎么替换了。
或者用$aSRE&','&$aSRE...自己重新组合也行,没想用,
顺便想学习一下正则,所以提出了这个问题。

haijie1223 发表于 2016-5-5 14:16:29

回复 6# 1361739590


    afan版主回贴了竟然不问他,他是正则大牛!不对,是正则之神!不对,是正则神牛!不对。。。算啦~
1、还是看看帮助吧,(?m) 行内匹配模式,^和$匹配换行符内的数据。 刚才我写的那个可以不用这个行内匹配。
2、?:是匹配到了但是不捕获,不分配分组,返回结果中不显示。
3、\是转义符号,这里可以不用。
4、两遍是因为要匹配两个地方,10和11

haijie1223 发表于 2016-5-5 14:18:13

去掉没用的项目,可以这么写(?:.*?,){9}(.*?),(.*?),

afan 发表于 2016-5-5 14:21:40

回复1361739590


    afan版主回贴了竟然不问他,他是正则大牛!不对,是正则之神!不对,是正则神牛 ...
haijie1223 发表于 2016-5-5 14:16 http://www.autoitx.com/images/common/back.gif


    除了神什么油其它的我给满分 {:face (125):}

1361739590 发表于 2016-5-5 14:39:04

回复 8# haijie1223


    谢谢。

1361739590 发表于 2016-5-5 14:40:19

回复 10# afan


    经常看到回答正则问题。这里想问一下,这个可以用 StringRegExpReplace 这个函数来替换第10里面的内容么?

1361739590 发表于 2016-5-5 15:17:25

回复 10# afan

   ?    匹配前面的子表达式零次或一次
想问一下下面的问题:
1..*是指除“\n”之外的任何单个字符零次或多次么?包括 , 这个符号吧。
2.(.*?),   前面的子表达式是指   .*   这个么?是的话这个零次或一次怎么理解呢?
3. 其实就是想知道    这样写 (.*?),   能匹配1, 或 2, 或 3, ..
    (.*),   这样写只能匹配   1,2,3,.....20   这一个结果,   就是这个?的原理。

afan 发表于 2016-5-5 15:30:38

回复afan


    经常看到回答正则问题。这里想问一下,这个可以用 StringRegExpReplace 这个函数来替 ...
1361739590 发表于 2016-5-5 14:40 http://www.autoitx.com/images/common/back.gif


    当然可以

afan 发表于 2016-5-5 15:35:23

回复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
查看完整版本: 求一个正则表达[已解决]