Awk
awk (mawk):正則表達式編譯失敗(缺少操作數)
我想將以下正則表達式與 awk 一起使用來驗證電話號碼:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
但我收到以下錯誤:
awk: line 1: regular expression compile failed (missing operand)
由於此處使用的範圍是固定長度的,因此您可以簡單地寫出整個範圍
[0-9]{3}
=>[0-9][0-9][0-9]
。而不是(| |-|.)
,( |-|.)?
- 雖然我很困惑:.
除了空格和之外,您是否允許任何字元()-
?那麼它可能只是.?
因為空間並且無論如何-
都匹配。.
如果您匹配文字 period.
,那麼您應該[- .]?
改用(前導-
是為了避免解釋為字元範圍)。所以:^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$
變成:
^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$