저는 Windows 7 운영 체제에서 Cygwin을 사용하고 있습니다.
다음 형식으로 이메일을 일치시키려고 합니다.x.y@enron.com
이것은 내 정규식입니다.
grep [a-zA-Z0-9]+\.[a-zA-Z0-9]+@(E|e)nron\.com
그것은 돌아온다
-bash: syntax error near unexpected token `('
사용할 때 작동합니다정규식101.com
[email protected]
다음과 같은 이메일 과 일치해야 합니다 .[email protected]
답변1
[
, \
, (
및 이들 모두는 셸에서 특별한 의미를 가지며 )
명령 매개 변수(여기 )에서 그대로 전달하려는 경우 grep
인용해야 합니다 .
또한 이와 같은 범위는 [a-z]
C 로케일 외부에서는 거의 의미가 없습니다.
따라서 여기에서 다음을 수행할 수 있습니다.
LC_ALL=C grep -xE '[[:alnum:]]+\.[[:alnum:]]+@(E|e)nron\.com' < some-file
또는:
LC_ALL=C grep -xE '[[:alnum:]]+\.[[:alnum:]]+@[Ee]nron\.com' < some-file
E
확장 정규식 e 와 일치하는 행을 보고합니다 x
. al
숫자 문자는 num
로케일의 문자로 제한됩니다 C
(Cygwin에서는 발음 구별 부호 및 아랍어 십진수가 없는 ASCII 영어/라틴 문자, C 로케일에서는 [[:alnum:]]
동일 [a-zA-Z0-9]
함).
위에서는 가장 강력한 인용 형식이 사용되었습니다 '...'
(특수 문자 없음).
+
, |
, (...)
예확장하다정규식 연산자(기초적인grep
) 없이 예상 대로 정규식 연산자를 사용합니다 -E
. 아니요 -x
, grep
일치하는 항목을 찾습니다.이내에행이므로 예를 들어 다음 행이 일치됩니다.
[email protected] [email protected] whatever
^^^^^^^^^^^^^
그렇지 않은 경우 LC_ALL=C
다른 [[:alnum:]]
알파벳 문자(예: 그리스어, 키릴 자모, 한국어)의 문자와 일치할 수 있으며 [a-z]
분음 부호가 있는 일부 라틴 문자(예: )와 일치할 수 있지만 다음 과 같은 다른 문자는 일치하지 않습니다 á
.ç
ÿ
ẑ
ź
뒤쪽에 z
...