전화번호를 확인하기 위해 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)
답변1
여기에 사용된 범위는 고정 길이이므로 전체 범위 [0-9]{3}
=> 를 간단하게 작성할 수 있습니다 [0-9][0-9][0-9]
. 대신 (| |-|.)
, ( |-|.)?
- 혼란스럽기는 하지만 .
공백과 ( ) 이외의 문자를 허용합니까 -
? 글쎄요 아마도 .?
공간 때문일 것이고 어쨌든 -
일치하지 않습니다 .
. 리터럴 마침표와 일치하는 경우 ( 문자 범위로 해석되지 않도록)를 .
사용해야 합니다 . 그래서:[- .]?
-
^\(?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]$