1

perforce 仓库路径的格式如下:

//depot/solution/project/file.cs#232

我怎样才能只提取“file.cs”。我尝试了以下方法。

[^//]*$

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

4

3 回答 3

6

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

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

解释:

(\w+\.\w+)

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

[^/]*

匹配 0+ 个不是/. 但是所有单词字符都会在之前被放入\w+匹配中(因为它首先被评估并且+会尝试尽可能多地匹配)所以在你的例子中这匹配#200

$

匹配行尾。这是需要的,所以a.directory不会匹配/a.directory/file.txt

于 2013-11-14T10:15:33.697 回答
2

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

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

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

于 2013-11-14T10:13:41.937 回答
1

假设您使用的是PCRE,您可以使用以下模式:

'[^/]*(?=#)'
于 2013-11-14T10:13:40.977 回答