2010-01-27 94 views
3

我有這樣一個路徑:如何用正則表達式獲得前一個單詞?

C:\ Development.TFS \ Examn \ R4分支\網絡\ OrganisationManager \主題\藍色\ CSS

我需要一個正則表達式得到了這個詞「藍色「。我試過了,但還沒有找到解決方案。它實際上是從該字符串的最後一個單詞之前得到該單詞。 請幫忙, 謝謝

+0

你應該說明你所使用的語言。 – ghostdog74 2010-01-27 08:26:44

回答

6
(\w+)\W+\w+$ 

匹配倒數第二個單詞,將其捕獲到反向引用編號中。 1,然後匹配一個或多個非單詞字符,然後匹配最後一個單詞,然後匹配EOL。

如果你真的不希望實際的話,但路徑元素匹配(即使它們包含非字字符),然後

([^\\:]+)\\[^\\]+$ 

可能做得更好。

編輯:添加:到「倒數第二個字的組」,因此正則表達式也可以處理相對路徑。

+1

路徑元素包含非單詞字符,例如'R4分支'包含' - '。所以你的正則表達式不匹配'C:\ Development.TFS \ Examn \ R4分支\ Web \ OrganisationManager \ themes \ blue-sea \ css' – Rorick 2010-01-27 08:14:49

+0

你說得對。然而,OP要求提供文字,而不是路徑元素(他可能指的是)。將編輯。 – 2010-01-27 08:20:10

+0

+1爲更新的正則表達式。 – Amarghosh 2010-01-27 08:23:43

0

你應該在字符串中找到這個模式:([\w\s.-]+)\\[\w\s.-]+$。第一組將在您的案例中包含單詞「藍色」。正則表達式和訪問組的精確語法取決於你的編程語言。

+2

'\ d'是'\ w'的一個子集,所以'\ w \ d'是多餘的。 – Amarghosh 2010-01-27 08:21:08

+0

是的,你是對的。 – Rorick 2010-01-27 08:23:31

0

如果(eregi( '主題\\(即[az] +)\\ CSS',$主題)){ #匹配成功 }其他{ #匹配嘗試失敗 }

一個PHP例如讓單詞blue。

+0

也許你必須嘗試正則表達式的朋友 這是一個偉大的工具,使正則表達式 – Marco 2010-01-29 11:20:45

1

難道你不能簡單地使用字符'\'拆分字符串,然後得到splitResult [splitResult.Count-1]?

你總是可以替換「\」在你的環境中的路徑分隔符,更一致的結果

0

另一種選擇:

(\w+)\\\w+$ 
+0

我發佈這個和刪除,因爲OP的路徑中的「單詞」可以包括非'\ W'字符像'-',''','空格'等 – Amarghosh 2010-01-27 08:43:09