正则表达式从perforce路径中提取文件名

时间:2013-11-14 10:10:10

标签: regex perforce

perforce depot路径具有以下格式:

  

//仓库/溶液/项目/ file.cs#232

如何只提取“file.cs”。我尝试了以下内容。

[^//]*$

不确定如何消除“#1”部分。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

即使文件名后面没有#,也会找到文件名。

(\w+\.\w+)[^/]*$

说明:

(\w+\.\w+)

这与文件名本身匹配,\w是一个单词字符(与[a-zA-Z0-9_]相同)。所以它的1+单词字符,一个句号(.自己匹配任何字符,你需要\.来匹配实际的.),然后再多1个单词字符。

[^/]*

匹配不是/的0+个字符。但是所有单词字符都会被放入\w+匹配之前(因为它首先被评估,而+会尝试尽可能多地匹配)所以在你的例子中它匹配{{1} }

#200

匹配该行的结尾。这是必需的,因此$无法匹配a.directory

答案 1 :(得分:2)

您可以使用此正则表达式:

/\/([^\/#]*)#/

并使用匹配的组#1作为您的值file.cs

答案 2 :(得分:1)

假设您正在使用PCRE,则可以使用以下模式:

'[^/]*(?=#)'