答案 0 :(得分:1)
如果没有确切的输入(而不仅仅是图片),很难复制你的问题,所以我希望下面有正确的输入。在任何情况下,您遇到的问题是您还没有将中间列设为可选。我已重新创建您的正则表达式以更好地执行,并允许将\s
更改为\h
(水平空白字符)。你还没有指定一个正则表达式引擎,所以我假设任何工作。如果您的引擎不支持\h
,则可以改为使用[ \t]
。
^([^$]+\$)\h+([a-z]:\\\S*)?\h+(.*)$
IPC$ Remote IPC
ADMIN$ C:\Windows Remote Admin
D$ D:\ Default share
C$ C:\ Default share
IPC$ Remote IPC
IPC$
Remote IPC
ADMIN$ C:\Windows Remote Admin
ADMIN$
C:\Windows
Remote Admin
D$ D:\ Default share
D$
D:\
Default share
C$ C:\ Default share
C$
C:\
Default share
^
在行首处断言位置([^$]+\$)
将以下内容捕获到捕获组1中
[^$]+
匹配$
除{/ 1}}之外的任何字符\$
按字面意思匹配$
\h+
匹配一个或多个水平空白字符([a-z]:\\\S*)?
(可选)将以下内容捕获到捕获组2中
[a-z]
匹配此范围内的任何字符(任何小写字母 - i
标记,它也匹配大写变体):\\
按字面意思匹配:\
\S*
匹配任意数量的非空白字符\h+
匹配一个或多个水平空白字符(.*)
将任意字符捕获到捕获组3 $
断言行尾的位置