我知道$
符號表示行或字符串的結尾。
它必須放置到正則表達式?
當我們忽略$
時會發生什麼或意義如何變化?
例如:
^/abc/\w{1,3}
^/abc/\w{1,3}$
是什麼在上述兩行的差?
我知道$
符號表示行或字符串的結尾。
它必須放置到正則表達式?
當我們忽略$
時會發生什麼或意義如何變化?
例如:
^/abc/\w{1,3}
^/abc/\w{1,3}$
是什麼在上述兩行的差?
它取決於你想要什麼。你不需要寫任何東西到正則表達式中,即使(空)在某種程度上也是一個有效的正則表達式。
在兩種模式不同的是,所述第一一個檢查對象與圖案而第二個檢查開始,如果整個主題的圖案精確地匹配。
/abc/hello world
將匹配第一個,但不是第二個。
所以說,第二個模式是第一個模式的更具體的版本。
第一個匹配/abc/aapje
,第二個並不是因爲它要求在1到3個單詞字符之後必須跟隨行尾。
那麼第一個正則表達式^/abc/\w{1,3}
將匹配/abc/aaa123
其中^/abc/\w{1,3}$
不會。
原因是$
錨點匹配一行的結尾。
同樣,^
錨點也匹配行的開始。
無論是^
還是$
錨都是強制性的,事實上,如果您希望匹配某個字符串中的某個字符,您可能會忽略這兩個字符。例如。 /abc/\w{1,3}
將匹配該字符串Some text /abc/def more text
中心的。
如果你想看看如何添加各種錨定效果的正則表達式我建議嘗試Regex101.com或Debuggex.com。
你應該擴大你的答案。告訴OP爲什麼它不匹配。 – 2014-09-10 11:26:15
第一個正則表達式也會匹配'/ abc/foo-bar-baz',但是第二個只匹配'/ abc/foo'或者'/ abc/123'或者'/ abc/9' – anubhava 2014-09-10 11:24:33
@anubhava爲什麼不能發佈作爲一個答案,因爲它是完整的和正確的? :) – 2014-09-10 11:26:27
其實我被釘十字架一回答這個簡單的問題,所以我開始避免非常簡單的答案:) – anubhava 2014-09-10 11:27:55