2012-01-20 61 views
30

我在瀏覽計算器,並已注意到一個正則表達式的最後一個斜線之後的所有匹配之後得到的一切正則表達式是的最後一個斜線

([^/]+$) 

因此,舉例來說,如果你有http://www.blah.com/blah/test 的reg表達式將提取「測試'沒有單引號。

我的問題是爲什麼它這樣做?不是^ /意味着斜線的開始?

編輯: 我想我不明白如何+ $抓住「測試」。 +重複先前的項目一次或多次,以便忽略所有/斜槓之間的所有數據。然後如何$提取測試

+5

這些題型的真棒資源是http://regexr.com(去這裏:http://regexr.com?2vpj8爲你的真實表情,如果你將鼠標懸停在它的每一部分上,你會很好地描述該規則的作用)。 –

+0

對於這些問題,一個很棒的資源是http://regexr.com([go here](http://regexr.com?2vpj8)),如果你將鼠標懸停在每個部分上,你會得到一個這個規則做的很好的描述)。 –

回答

23

不,^裏面[]意味着否定。

[/]代表'集合中的任何字符[/]'。

[^/]代表'任何字符不在集[/]'。

+0

我想我不明白如何+ $抓住「測試」。 +重複先前的項目一次或多次,以便忽略所有/斜槓之間的所有數據。那麼$如何提取測試。 – CodeCrack

+2

@CodeCrack'[^ /]'匹配一個非斜槓; '[^ /] +'匹配第一個非斜槓子字符串; '[^ /] + $'在測試結束時與非斜槓子串匹配。 –

+0

請編輯答案,直接對問題發言,而不是僅僅在評論中說出。 –

0

^[]開頭是字符類否定。 [...]指定了一組要匹配的字符。 [^...]表示匹配每個字符,但表示該字符集。

所以[^/]的意思是匹配除/以外的每個可能的字符。

0

如果你把^放在一個組中,它表示所有的章程都不在這個組裏。因此,匹配所有不是斜槓的章程,直到行$ anchor結束。

1

在括號內,^ /表示NOT A /。因此,這是匹配一系列非 - /直到行的末尾。

0

不,^根據上下文意味着不同的事情。當一個字符類([]),該^否定的表達,意思是「匹配任何東西,除了/

[]

裏面,^意味着你在說什麼。

1

在原來的問題,只是一個backslash需要before slash,在這種情況下,正則表達式將得到everything after last slash字符串中

([^\/]+$) 
相關問題