タグ付けされた質問 「regular-expression」

正規表現は、文字列内の文字のパターンを照合する手段です。

3
Bashで二重文字を見つけるための正規表現
コマンドライン(Bash)で、テキスト、リストなどの二重文字のすべての出現を検出する正規表現を探しています。 主な質問:様配列を探すための簡単な方法があるaa、ll、ttttt1は同じ文字のn個の出現箇所を検索することを正規表現を定義し、その他は?私が探しているのは、非常に基本的なレベルでこれを達成することです。コマンドライン。Linuxシェル。 かなりの調査の後、私は次の答えにたどり着きました–そしてそれらから生じる質問、そしてそれゆえ彼らは私に解決策がどこにあるのかについてのヒントを与えてくれました。だが: a)(e)grepとバックスラッシュの問題 grep 'a\{2\}' 探す aa egrep'a{2}' 探す aa 質問:バックラッシュを設定する必要性は、実際に使用するコマンドにバインドされていますか?もしそうなら、誰かがここで(e)grepを使用するときに考慮すべき他のことを教えてくれますか? b)私が探していたものとは異なりますが、この質問に対する回答をここで見つけました。 grep -E '(.)\1' filename同じ文字が複数回出現するエントリを探しますが、その頻度は尋ねません。これは私が探しているものに近いですが、繰り返しの数を設定したいと思います。 私はおそらくこれを2つ以上の質問に分割する必要がありますが、この素晴らしいサイトをここに殺到させたくありません。 PS:もう一つの問題、おそらくトピックオフけど:それであるin、inside、atまたはon the shell。そしてon the command line正しいですか?

2
正規表現の定義は何ですか?
私は最近、この質問に対する私の回答へのコメントの正規表現を構成するものについて、Ghotiとの友好的な議論に入りました。私は以下が正規表現であると主張しました: `[Rr]eading[Tt]est[Dd]ata` Ghotiは同意せず、代わりにファイルグロブであると主張した。ウィキペディアのglobページは、次のように述べています(私の強調): Globsには、式の前の部分を複数回繰り返すことができるKleeneスターの構文は含まれていません。したがって、これらは正規表現とは見なされません。これは、特定の有限アルファベットよりも多くの正規言語を記述することができます。 ただし、この主張に対する引用はなく、これは特定のWikipedia編集者の意見にすぎないことを示しています。 The Single UNIX®Specification、Version 2では、基本正規表現(BRE)は単一の文字でさえ可能であると述べています: 通常の文字とは、それ自体に一致するBREです。サポートされている文字セットの任意の文字。ただし、BRE特殊文字にリストされているBRE特殊文字は除きます。 それで、* nixの世界での正規表現の定義は何ですか?その定義はファイルグロブを除外しますか?

4
正規表現に一致するサブディレクトリの名前を再帰的に変更する
と呼ばれるフォルダを持つメディアサーバーがありますSeries。(/media/Expansion2/Series/) その中で、私は(驚き!)TVシリーズを持っています。これらは単なるショー名です。たとえば、/media/Expansion2/Series/The Big Bang Theory/ 各ショーのフォルダー内(および問題がある場所です)にシーズンフォルダーがあります。私は現在、次の2つの規則が混在しています(おそらくいくつかの規則に加えて): /media/Expansion2/Series/The Big Bang Theory/The Big Bang Theory Season 1 /media/Expansion2/Series/The Big Bang Theory/Season 2 最後に、すべてのフォルダの名前を単にに変更しますSeason #。 正規表現として、私はおそらく次のようなことを言うでしょう s/.*(Season \d)/$1 フォルダーにのみ適用され、ファイルには適用されません。これは約50以上のshowサブフォルダ用であることにも言及する必要があるため、/media/Expansion2/Series/レベルから開始して各シリーズを調べる必要があります:)

7
シェルで数字行とアルファベット行のテキストをマージする方法は?
次のようなテキストを持つファイルがあります。 AAAA BBBB CCCC DDDD 1234 5678 9012 3456 EEEE 7890 等... そして、アルファベットの行と数値の行を一致させて、次のようにします。 AAAA 1234 BBBB 5678 CCCC 9012 DDDD 3456 EEEE 7890 誰かがこれを達成する簡単な方法を知っていますか?


1
なぜいくつかの正規表現コマンドは、さまざまな文字を含む '\'の反対の解釈を持っているのですか?
たとえば、次のコマンドを見てください。 find . -regex ".*\.\(cpp\|h\)" これにより、ディレクトリ内のすべての.hおよび.cppファイルが検索されます。ピリオド文字「。」正規表現では通常、「任意の文字」を意味します。実際のピリオドのみに一致させるには、バックスラッシュ文字「\」を使用してエスケープする必要があります。 この場合、特別な意味を持つ文字を指定すると、それをエスケープして、その文字が表す実際の文字を取得する必要があります。 ここで、括弧と「or」バーをそれぞれ「(」、「)」、「|」の文字として扱います。これらには、正規表現のグループ化に使用される特別な意味もあります。ただし、特別な意味を得るには、バックスラッシュを使用して文字をエスケープする必要があります。バックスラッシュがなければ、文字はそれが表す実際の文字の意味を持ちます。 なぜ「。」「(」、「)」、および「|」とは異なる方法で処理されますか?


5
bashの先頭の文字列を削除する
のような文字列がrev00000010あり、最後の数字、この場合は10のみが必要です。 私はこれを試しました: TEST='rev00000010' echo "$TEST" | sed '/^[[:alpha:]][0]*/d' echo "$TEST" | sed '/^rev[0]*/d' どちらも何も返しませんが、正規表現は正しいようです(regexrで試してみました)

3
GNU grep -PでPerl互換の正規表現を使用する
(?<=\[')[^,]*次の行を含むファイルでこの正規表現を使用していますdisk = ['OVS/sdasd/asdasd/asdasd/something.img, w'] 戻って欲しい OVS/sdasd/asdasd/asdasd/something.img grepそれを機能させるにはどうすればよいですか? 私は試しましたgrep -P "(?<=\[')[^,]*"が、それは行全体を返します。


1
bashのif句内での正規表現の使用
ifブロックを見てください: #!/bin/bash str="m.m" if [[ "${str}" =~ "m\.m" ]]; then echo "matched" else echo "not matched" exit 1 fi exit 0 これは「一致した」と出力するはずですが、そうではありません。どこがいけないの?


2
'[az] *'がアルファベット以外の文字列と一致するのはなぜですか?
alphanum次の2行を含むファイルがあります。 123 abc this is a line を実行するsed 's/[a-z]*/SUB/' alphanumと、次の出力が表示される理由がわかりません。 SUB123 abc SUB is a line 私は期待していました: 123 SUB SUB is a line 私は修正を見つけました(sed 's/[a-z][a-z]*/SUB/'代わりに使用してください)が、なぜそれが機能し、私のものが機能しないのか理解できません。 手伝ってくれますか?

3
「。*?」を使用する方法と理由
SuperUserでこの質問に回答しました。これは、出力のgrep中に使用される正規表現の種類に関連したものでした。 私が出した答えはこれでした: tail -f log | grep "some_string.*some_string" そして、私の答えへの3つのコメントで@ボブはこれを書いた: .*貪欲であり、あなたが望むより多くをキャプチャするかもしれません。.*?通常はより良いです。 そしてこれ、 これ?はの修飾子で*あり、貪欲なデフォルトの代わりに遅延させます。PCREを想定しています。 私はグーグルで検索しましPCREたが、私の回答でこれの意味を理解できませんでしたか? そして最後にこれ、 また、これは正規表現(デフォルトではPOSIX正規表現を実行するgrep)であり、シェルグロブではないことも指摘しておく必要があります。 正規表現とは何か、そしてgrepコマンドでの非常に基本的な使い方だけを知っています。だから、私はそれらの3つのコメントのどれも得ることができず、私はこれらの質問を念頭に置いています: 用法の違いは何ですか.*?対は.*? どちらが良いですか、どのような状況下ですか?例を挙げてください。 また、コメントを理解しておくと役に立ちます。 更新:質問への回答として、正規表現はシェルグロブとどのように異なりますか? @Kusalanandaがコメントでこのリンクを提供しました。 注:必要に応じて、コンテキストを参照するために回答する前に、この質問に対する私の回答を読んでください。

2
固定テキストから始まり、最初の空白行までのGrep
次のprova.txtようなファイルがあります。 Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random2 random3 random4 extra1 extra2 bla Start to grab from here: 2 fix1 fix2 fix3 fix4 random1546 random2561 extra2 bla bla Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random22131 「ここから始めましょう」から最初の空白行にグレップアウトする必要があります。出力は次のようになります。 Start to grab from …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.