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,您可以使用以下模式:
'[^/]*(?=#)'