特定の文字で始まる開き括弧の後の単語を検索する正しいgrep正規表現文字列は何ですか?

特定の文字で始まる開き括弧の後の単語を検索する正しいgrep正規表現文字列は何ですか?

私のPythonスクリプトの中には、関連ファイルglob.glob(parent_folder_path + glob_str)を含むこの行を正しいgrepコマンドを使用してコンソールに印刷する必要がありますが、これまでは印刷方法がわかりません。

すべて - 行を検索するコードglob.globは次のとおりです。

grep --exclude-dir='.history' --exclude-dir='__pycache__' --exclude-dir='.wine' -Rinw /home/andylu/Desktop/Python/Scripts/ -e 'glob.glob'

しかし、これはまだ私が達成したい正確さではありません。正規表現文字列として使用すると、'glob.glob(p*'検索結果には1行だけ表示されます。結果が私に与えられるというのがglob.glob()理解できませんね。(p*()

次に私はそれを試して'glob.glob(p.*'実際にうまくいき、すべての結果を見せましたglob.glob(parent_folder_path + glob_str)

試行錯誤を経て近くで見つけましたが、grep構文をよりよく理解したいと思います。最後の正規表現文字列は次のように有効ですか?このチートシート.ランダムな文字とランダムな*繰り返し数を示しますか?

答え1

あなたの推測はかなり近いです。正規表現では、シーケンスとは、p*.「0個以上の文字pの後にランダムな文字の1つが続くもの」を意味します。

  • *- 0個以上の先行トークン
  • .- 正確に1文字

正規表現では、より一般的な「グローバルワイルドカード」とは、.*「すべての種類の1つ以上の文字」を意味します。

$式にタグ(「ドメインの終わり」を意味)がないため、推測は有効です。

この場合、次のような表現が必要になることがあります/glob\.glob(p.*/

  • glob\.glob(p- リテラル文字列glob.glob(pの後に
  • .*- すべての種類の文字の1つ以上

より詳細に説明するには、たとえば、すべての呼び出しをペアでより広く一致させるには、glob.glob()次のようにします/glob\.glob\([a-z_+ ]+\)/

  • glob\.glob\(- リテラル文字列glob.glob(
  • [a-z_+ ]+- 以下の1つ以上:文字az、アンダースコア、a、+またはスペース
  • \)- 文字通りの意味)

関連情報