RegEx捕获部分文本

时间:2014-01-08 23:07:23

标签: regex

拜托,请帮帮我吧! 我有一个这样的字符串:

C:\Temp dir\Some one else\File name.ext

我需要捕获File name.ext 但我无法理解正则表达式是怎么做的。

当我尝试创建regexp时,我无法理解如何仅捕获最后一个符号\以及它们之间的文本和.

4 个答案:

答案 0 :(得分:3)

嗯..以下RegEx应该这样做:

\\[^\\]*\.

根据您的语言和环境,反斜杠和/或其他字符可能需要进一步转义。

答案 1 :(得分:2)

尝试类似:

[^\\]*\.\w+$

使用$锚定到结束。

正则表达式的细分说明:

[^\\]*   Match the file name. (Any characters other than a \)
\.       Match the '.'.
\w+      Match the extension.
$        Anchor to end.

答案 2 :(得分:1)

在回答其他问题的评论时,可以选择其他方式。

如果要在反斜杠6和7之间捕获文本,可以执行以下操作:

(?:[^\\]*\\){6}([^\\]*)

说明:

(?: ){6}   A non-capturing group repeated 6 times
[^\\]*     Any number of characters other than backslash
\\.        Followed by backslash
([^\\]*)   capture all non backslash characters that follow

您可以在http://regex101.com/r/fP2cL7

看到这一点(有更好的解释)

如果你想要反斜杠4和7之间的匹配,它将是

    (?:[^\\]*\\){4}((?:[^\\]*\\){2}[^\\]*)

如上所述,“不要对前四个反斜杠做任何事情”,然后捕获“没有反斜杠,然后反斜杠两次,之后再没有反斜杠”。它捕获从反斜杠4到反斜杠7的所有内容(不包括末尾的斜杠)

答案 3 :(得分:0)

使用Powershell

(gci $filepath).Name


使用Regex

(?!.*\\).*

这将匹配最后一次斜杠\

之后的所有内容