heavenm 发表于 2020-1-3 00:52:32

floor6ggg 发表于 2020-1-2 22:41
采用排除一段内容向下匹配的解法的话,楼主的2次正则完美匹配。。。。仅针对类似以上6行的数据进行处理---- ...

这样子不行,手机名称不是固定的!长短也不一定的,信息也不一定
目前好像只有2次拆分的方法
List of devices attached
711300385A       unauthorized transport_id:1
0385B       unauthorized transport_id:2
1711300385C       unauthorized transport_id:3
........
711300385Z       unauthorized
这样子就没用了

floor6ggg 发表于 2020-1-3 21:51:44

本帖最后由 floor6ggg 于 2020-1-3 21:59 编辑

\S+\s{3,}.+\v?试一试。。。。非抬杠。。。特征不少,细看了一下给出的文本,中间是7个空格,上文的{3,}是随便取的,根据数据特征自己进行调试更改,替换成{7},{3,7}等都没问题或者
\S+\s+unau.+\v?unau是简写,替换成unauthorize,随你喜欢……
以上代码仅针对楼上给出的6行数据,测试有效


floor6ggg 发表于 2020-1-27 16:07:35

特别的春节,实在是不想玩手机了,翻看旧帖,
看到一个很有想法的解法…………于是模仿gyp2000 在帖子 http://www.autoitx.com/thread-71321-1-1.html   里面的解法
新的尝试,居然成功了………………当然,距离发帖过时太久,仅留个印记吧

floor6ggg 发表于 2020-1-27 16:09:04

### 友情提示:本脚本由 Au3.REHelper 于 2020/01/27 16:02 自动生成,不保证其正确性,请自行测试 ###
Local $sSource = _
                'List of devices attached' & @CRLF & _
                '711300385A       unauthorized transport_id:1' & @CRLF & _
                '0385B       unauthorized transport_id:2' & @CRLF & _
                '1711300385C       unauthorized transport_id:3' & @CRLF & _
                '........' & @CRLF & _
                '711300385Z       unauthorized'
;~MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '(?s)(List of devices attached\v+)?(\V+\v)', '\2')
MsgBox(0, '替换结果', $sSRERe)


heavenm 发表于 2020-1-27 19:15:40

floor6ggg 发表于 2020-1-27 16:09


(?s)(?:List of devices attached\v+)?(\V+\v)
貌似确实你这个是正解,一条正则搞定了

heavenm 发表于 2020-1-27 19:18:32

不过貌似还是有缺陷的,如果第一行的List of devices attached不存在就凉凉了!有时候会输出其他的结果!看来还是得多几条判断!

floor6ggg 发表于 2020-1-27 19:27:49

多点判断…………稳妥的做法…………赞!
页: 1 [2]
查看完整版本: 请教个正则问题!排除一段内容向下匹配可以的么