一個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