3つの同じ文字を正規表現で検索したい。たとえば、私が試した何を(111、***、!!!、999)正規表現:同じ文字をバッファに入れよう
:
最初を試してみてください。(\w{3})|(\d{3})\1
二を試してみてください。[\w+]{3}|[\d+]{3}\1
grep
で
3つの同じ文字を正規表現で検索したい。たとえば、私が試した何を(111、***、!!!、999)正規表現:同じ文字をバッファに入れよう
:
最初を試してみてください。(\w{3})|(\d{3})\1
二を試してみてください。[\w+]{3}|[\d+]{3}\1
grep
で
、 拡張モードオプション-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
を:
egrep 'aaa'
egrep '111'
など
Javaのようなプログラミング言語を使用している場合は、
\\ 1は最後に選択したグループとの一致に使用されるため、連続して使用すると、必要な数の文字を一致させることができます。
'grep'の拡張モードでは後方参照も可能です。 –
どのツールを使用しますか? 'linux'は正規表現ツールではありません。 –
「ツール」とはどういう意味ですか?唯一必要なのは、テキスト内の3つの文字を検索することです:) –
文字は連続する必要がありますか?疑問はまだあなたが正規表現を扱うために使うツール、 'grep'ですか? 'sed'? 'awk'? –