2016-04-30 11 views
0

3つの同じ文字を正規表現で検索したい。たとえば、私が試した何を(111、***、!!!、999)正規表現:同じ文字をバッファに入れよう

最初を試してみてください。(\w{3})|(\d{3})\1

を試してみてください。[\w+]{3}|[\d+]{3}\1grep

+1

どのツールを使用しますか? 'linux'は正規表現ツールではありません。 –

+0

「ツール」とはどういう意味ですか?唯一必要なのは、テキスト内の3つの文字を検索することです:) –

+0

文字は連続する必要がありますか?疑問はまだあなたが正規表現を扱うために使うツール、 'grep'ですか? 'sed'? 'awk'? –

答えて

1

拡張モードオプション-Eを有効にして、逆参照を有効にして次の正規表現を使用することができます。

grep -E '(.)\1\1' < file 

すべての行に3つの連続した等しい文字が含まれます。たとえば、ファイルがある場合は、次のように

$ grep -E '(.)\1\1' < testin2 
aaa 
bbb 
aaccca 
!!! 
999 

正規表現は動作します:ドット(.)は、すべての文字に一致します(ただし、アカウントに新しい行を服用していない)それはになります

aaa 
aab 
bab 
bbb 
aaccca 
asdad 
!!! 
999 

。今ではブラケットの間に置いているので、(.)は逆参照グループを使って参照することができます。次に、正規表現がドット一文字にマッチしたパターンを探している間に、他の文字が2回も繰り返されるように、2つの連続する\1を書きます。

あなたはだけあなたはgrep-oパラメータ渡すことができ、3つの連続した文字を放出する場合:あなたはbashシェルを使用している場合は、使用することができます

$ grep -P '(.)\1\1' < testin2 
aaa 
bbb 
aaccca 
!!! 
999 
2

を:

egrep 'aaa' 
egrep '111' 

など

Javaのようなプログラミング言語を使用している場合は、

\\ 1は最後に選択したグループとの一致に使用されるため、連続して使用すると、必要な数の文字を一致させることができます。

+0

'grep'の拡張モードでは後方参照も可能です。 –

関連する問題