私は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では発音区別記号とアラビア語の10進数を持たないASCII英語/ラテン文字、Cロケールでは[[:alnum:]]
同じ[a-zA-Z0-9]
)。
上記では、最も強力な引用形式が使用されました'...'
(特殊文字なし)。
+
, |
,(...)
はい拡大する正規表現演算子(基本的なgrep
)なしで予想どおり正規表現演算子を使用します-E
。いいえ-x
、grep
一致するものを探します。以内に行なので、たとえば、次の行が一致します。
[email protected] [email protected] whatever
^^^^^^^^^^^^^
それ以外の場合は、LC_ALL=C
他の[[:alnum:]]
アルファベット文字(ギリシャ語、キリル文字、韓国語など)の文字と一致する可能性があり、分音符付きの[a-z]
一部のラテン文字(たとえば)と一致する可能性がありますが、次のような他の文字は一致しませんá
。ç
ÿ
ẑ
ź
後ろに z
...