perforce 仓库路径的格式如下:
//depot/solution/project/file.cs#232
我怎样才能只提取“file.cs”。我尝试了以下方法。
[^//]*$
不知道如何消除“#1”部分。有人可以帮忙吗?
即使文件名后面没有#,这也会找到文件名。
(\w+\.\w+)[^/]*$
解释:
(\w+\.\w+)
这与文件名本身匹配,\w
是一个单词字符(与 相同[a-zA-Z0-9_]
)。所以它的 1+ 个单词字符,一个句号(.
它自己匹配任何字符,你需要\.
匹配一个实际的.
),然后是 1+ 个单词字符。
[^/]*
匹配 0+ 个不是/
. 但是所有单词字符都会在之前被放入\w+
匹配中(因为它首先被评估并且+
会尝试尽可能多地匹配)所以在你的例子中这匹配#200
$
匹配行尾。这是需要的,所以a.directory
不会匹配/a.directory/file.txt
您可以使用此正则表达式:
/\/([^\/#]*)#/
并为您的价值使用匹配组#1file.cs
假设您使用的是PCRE,您可以使用以下模式:
'[^/]*(?=#)'