一个Perforce仓库路径是以下格式:正则表达式从Perforce的路径中提取文件名
//depot/solution/project/file.cs#232
我怎样才能只提取“file.cs”。我已经尝试了以下。
[^//]*$
不知道如何消除“#1”部分。谁能帮忙?
一个Perforce仓库路径是以下格式:正则表达式从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
假设你正在使用PCRE,您可以使用模式:
'[^/]*(?=#)'
使用匹配的组1作为文件名 – OGHaza
谢谢!第一组适合我的需求。你介意用一句话来解释它吗?我正在尝试学习正则表达式。 – csharper
补充说明 – OGHaza