2017-03-23 19 views
0

数日前から正規表現を学んでいます。私は小文字のみでアルファベットのみの選択範囲をクラス[]に文字化していました。例えばgrep comamndを使った正規表現の文字クラス

:ファイルは以下のようなテキストが含まれています。

grepコマンドを使用して
$ cat file 
.a 
.b 
.c .d 

私が一致するようにしようとしています(行がドットで始まる)

コマンド以下
$ grep '^\.[a-z]' file 

にこの意志を使用して小文字のアルファベット文字を一致する文字のみ .a .b .c ここで私の質問?なぜgrepの同じ行に.Dに一致していないコマンド、私はまた、このコマンドを使用して.D一致しようとした

.C:

$ grep '^\.[a-z][a-z]` file 

をしかし、あなたはいくつかのいずれかをしてくださいすることができ、この1は動作しません。私にこれを手伝ってもらえますか?

grep '\.[a-z]' file 

^は、それが開始でなければならないことを意味します。あなたがそれらのすべてを一致させたい場合は、やって、^を削除

[a-z] vs [a-z][a-z] 

答えて

2

これら二つの文字クラスとの違いは何ですかライン。したがって、リテラルドットに続いて、aとzの範囲にある文字をマッチさせようとしています。これは、行頭になければなりません。

[a-z][a-z][a-z]の違いは、[a-z]a-zの範囲の1文字と一致することです。 [a-z][a-z]を実行すると、それを2回実行していることを意味します。したがって、a-zの範囲の2つの連続する文字を一致させようとしています。

Here's a live example of the modified version

あなたは正規表現を学ぶしようとしている場合、私は非常に、regex101.com(用途上の例)を使用することをお勧めします。あなたが入力した正規表現の良い説明を与えるので。

+0

こんにちはVallentinありがとうございましたあなたのソリューションは完全に正規表現を学ぶのは良いです。 – user6420577

+0

あなたは大歓迎です!正規表現を学ぶときにregex101.comを使用しようとすると、本当に役立ちます! – Vallentin

+0

初心者のための非常に素晴らしいツールです。今日はとても幸せです:) – user6420577