Expr

了解 expr 實用程序的正則表達式匹配功能

  • April 11, 2022

誰能幫助我了解正則表達式匹配如何與該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

引用自:https://unix.stackexchange.com/questions/698768