2016-04-06 25 views
-2

正規表現に関する一般的な質問はいくつか見つかりましたが、私はこの作業を行うことはできません。私は私のパターンの中に特定の文字列の除外を含めたいと思います。私の使用例は、object以外のスーパークラスを持つクラスを定義するpythonファイル内のすべての行を見つけることです。したがって、例:grep:単語以外のすべてに一致する

class Class1(Superclass): #match 
class Class2(othersuperclass, Superclass): #match 
class Class3(object): #no match 

次の正規表現を使用して、クラスを定義する行を一致させることができます。私はそれが最適ではないと確信していますが、それは私が持っているものだとそれが動作します:

grep -n '^[[:space:]]*class[[:space:]][[:space:]]*[[:alpha:]][[:alnum:]]*[[:space:]]*(.*):' * 

しかし、私は括弧内の「オブジェクト」を持っている行を除外する方法を見つけ出すことはできません。

編集:私はもっとはっきりしていたはずです。私はファイルシステムで再帰的にファイルを検索しようとしています。現在、私はgrepをコマンドラインから使用していますが、より良いコマンドラインユーティリティがあれば、それを聞いてうれしいです。

+1

私は通常、パターンに一致する行を除外するために 'grep -v'を使います。したがって、例えば、 'grep ... | grep -v object'を実行します。 – dsh

+0

なぜ、astとos.walkを使用しないのですか? –

+0

@PadraicCunningham編集 – ewok

答えて

0

これは、あなたがこれまでについての私達に語ってきたものでしょう。

$ awk '/^[[:blank:]]*class[[:blank:]]+[[:alpha:]_][[:alnum:]_]*[[:blank:]]*\(.*\):/ && !/\(.*object.*\)/' file 
class Class1(Superclass): #match 
class Class2(othersuperclass, Superclass): #match 

しかし、あなたはあなたのサンプル入力/出力に含まれていない他の例についてIDKの。

関連する問題