2014-09-10 40 views
1

我知道$符號表示行或字符串的結尾。

它必須放置到正則表達式?

當我們忽略$時會發生什麼或意義如何變化?

例如:

^/abc/\w{1,3} 
^/abc/\w{1,3}$ 

是什麼在上述兩行的差?

+2

第一個正則表達式也會匹配'/ abc/foo-bar-baz',但是第二個只匹配'/ abc/foo'或者'/ abc/123'或者'/ abc/9' – anubhava 2014-09-10 11:24:33

+2

@anubhava爲什麼不能發佈作爲一個答案,因爲它是完整的和正確的? :) – 2014-09-10 11:26:27

+3

其實我被釘十字架一回答這個簡單的問題,所以我開始避免非常簡單的答案:) – anubhava 2014-09-10 11:27:55

回答

4

它取決於你想要什麼。你不需要寫任何東西到正則表達式中,即使(空)在某種程度上也是一個有效的正則表達式。

在兩種模式不同的是,所述第一一個檢查對象與圖案而第二個檢查開始,如果整個主題的圖案精確地匹配

/abc/hello world將匹配第一個,但不是第二個。

所以說,第二個模式是第一個模式的更具體的版本。

1

第一個匹配/abc/aapje,第二個並不是因爲它要求在1到3個單詞字符之後必須跟隨行尾。

1

那麼第一個正則表達式^/abc/\w{1,3}將匹配/abc/aaa123其中^/abc/\w{1,3}$不會。

原因是$錨點匹配一行的結尾。
同樣,^錨點也匹配行的開始。

無論是^還是$錨都是強制性的,事實上,如果您希望匹配某個字符串中的某個字符,您可能會忽略這兩個字符。例如。 /abc/\w{1,3}將匹配該字符串Some text /abc/def more text中心的。

如果你想看看如何添加各種錨定效果的正則表達式我建議嘗試Regex101.comDebuggex.com

+1

你應該擴大你的答案。告訴OP爲什麼它不匹配。 – 2014-09-10 11:26:15

相關問題