862228699 发表于 2018-4-1 18:56:37

【已解决】一个正则求助。。。。烧脑。。谢谢Afan

本帖最后由 862228699 于 2018-4-27 12:42 编辑

C:\新建文件夹\222222\sdfdf.exe
E:\sdfsdfdf\新建文件夹\222sd2\sd22df.exe

C:\Users\Administrator\Desktop\新建文件夹\360\11111.exe
C:\Users\Administrator\Desktop\新建文件夹\2345\er34.exe
C:\Users\Administrator\Desktop\新建文件夹\34567\dfdfg.bat

C:\Users\Administrator\Desktop\新建文件夹2\3600\1111441.exe
C:\Users\Administrator\Desktop\新建文件夹2\23450\er3334.exe
C:\Users\Administrator\Desktop\新建文件夹2\345670\dfd22fg.bat

C:\Users\Administrator\Desktop\新建文件夹3\3600\1111441.exe
C:\Users\Administrator\Desktop\新建文件夹3\23450\er3334.exe
C:\Users\Administrator\Desktop\新建文件夹3\345670\dfd22fg.bat

C:\Users\Administrator\Desktop\D3432323\新建文件夹3\345670\dfd22fg.bat

C:\Users\Administrator\Desktop\D3432323\DSFLKSJDF\新建文件夹3\345670\dfd22fg.bat我想匹配文件的倒数第二层目录路径。


意思从开始到“新建文件夹” 那层目录。而这个新建文件夹这个名字也是随机的。不确定的名字。

afan 发表于 2018-4-1 20:52:52

#include <Array.au3>
Local $sSource = _
                'C:\新建文件夹\222222\sdfdf.exe' & @CRLF & _
                'E:\sdfsdfdf\新建文件夹\222sd2\sd22df.exe' & @CRLF & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹\360\11111.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹\2345\er34.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹\34567\dfdfg.bat' & @CRLF & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹2\3600\1111441.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹2\23450\er3334.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹2\345670\dfd22fg.bat' & @CRLF & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹3\3600\1111441.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹3\23450\er3334.exe' & @CRLF & _
                'C:\Users\Administrator\Desktop\新建文件夹3\345670\dfd22fg.bat' & @CRLF & @CRLF & _
                'C:\Users\Administrator\Desktop\D3432323\新建文件夹3\345670\dfd22fg.bat' & @CRLF & @CRLF & _
                'C:\Users\Administrator\Desktop\D3432323\DSFLKSJDF\新建文件夹3\345670\dfd22fg.bat'
;~MsgBox(0, '源字符串', $sSource)
Local $aSRE = StringRegExp($sSource, '(?mi)^\w:\V+(?=\\.+?\\[^\\]+$)', 3)
If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($aSRE), '其中元素为: ' & $aSRE)
_ArrayDisplay($aSRE, UBound($aSRE))

xzf680 发表于 2018-4-2 10:28:57

A大正则出神入化

{:face (197):}

xzf680 发表于 2018-4-2 10:37:19

本帖最后由 xzf680 于 2018-4-2 10:40 编辑

回复 2# afan


刚测试少复制了个 ) 没问题,厉害!

afan 发表于 2018-4-2 11:31:40

回复afan


刚测试少复制了个 ) 没问题,厉害!
xzf680 发表于 2018-4-2 10:37 http://www.autoit3.cn/images/common/back.gif


    复制代码有时候是会出现掉符号的问题…

fang5072546 发表于 2018-4-2 12:01:31

学习了,原来(?m)(?i)还可以组合用的

志艺风云 发表于 2018-4-2 13:20:03

如果只是处理一个目录这个简单点
Local $sSource = 'C:\Users\Administrator\Desktop\新建文件夹\360\11111.exe'
$aSRE = StringLeft($sSource, StringInStr($sSource, "\", 0, -2) - 1)
MsgBox(0, "", $aSRE)

862228699 发表于 2018-4-27 12:41:25

回复 2# afan
感谢Afan正则之神,今天才看到。结贴吧。。。谢谢
页: [1]
查看完整版本: 【已解决】一个正则求助。。。。烧脑。。谢谢Afan