Expr
了解 expr 實用程序的正則表達式匹配功能
誰能幫助我了解正則表達式匹配如何與該
expr
實用程序一起使用?我已經閱讀了它的手冊頁,下面是摘錄:STRING : REGEXP anchored pattern match of REGEXP in STRING
但我無法理解它是如何工作的。我做了一些測試:
[root@192 ~]# expr "abc" : '.*' 3 [root@192 ~]# expr "abc" : 'b.*' 0 [root@192 ~]#
這
expr
兩個命令在做什麼?對於第一個命令,似乎expr
從 的第一個字元中找到了一個匹配項,abc
並報告了匹配的長度。但是為什麼它會0
為第二個命令產生?我只是不明白這裡的邏輯。順便說一句,我知道正則表達式是如何工作的。
引用的聯機幫助頁的相關部分是這些是錨定匹配。這意味著正則表達式需要匹配整個字元串,從頭到尾。所以你
.*
實際上是^.*$
。誠然,手冊頁不是很清楚,但是是的,它看起來預設會列印匹配的長度:$ expr "abc" : '.*' 3
您顯然可以使用擷取組列印匹配本身:
$ expr "abc" : '\(.*\)' abc $ expr "abc" : '.\(b.\)' bc