2016-09-23 8 views
1

私はobjective-c .mファイル内のすべての変数の名前を抽出しようとしています。私は正規表現がこれを行う良い方法かもしれないと思った。のは、私は私の元にはこのような何かを持っているとしましょう:正規表現を使用してソース内のすべてのNS *変数を解析します

- (void)testMethod:(NSString*)param1Name param2:(NSString*)param2Name{ 
    NSxxxxx *xxxx = @"something"; 
    NSString *test2 = @"test"; 
    NSArray *array; 
} 

理想的には私が探している出力は、このようなものです: XXXX test2は 配列

は、正規表現を使用してこのなんとかですか? 1つの正規表現が、次の単語が*で始まるときにNSで始まる単語ですべての行を抽出するのに十分かもしれないと思います。

編集:私は今のところ、これを持っている:これで

(NS)\w+\s*? 

問題は、それがVAR、ないVAR名のタイプと一致していることである:私はこれを取得できますか

NSXXXXX 
NSString 
NSArray 

アスタリスクの後の単語にマッチしますか?

+0

サウンドは実現可能です。あなたはすでにそれを始めましたか? –

+0

まだそれを考え出している。これまで私は(NS)\ w + \ s \ *を考えていますか?それは正しい方法ですか? – Tiago

+0

それは実際の単語ではなく変数のタイプと一致しますが、 – Tiago

答えて

2

あなたは*変数(行の先頭にあるもの)NSの特定の出現を一致させたいので、あなたが必要this regex demo

値は、グループ1の内側になります参照してください

(?m)^[ \t]*NS\w+\s*\*\s*(\w+) 

を使用することができます。

詳細

  • (?m) - ^が行の先頭に一致することを可能にするには複数行のオプションではなく、文字列
  • ^ - ライン
  • [ \t]*の開始 - ゼロ以上のスペース/タブ
  • NS - リテラルテキストNS
  • \w+ - 1+単語文字(文字、数字または下線)
  • \s* - 0+空白
  • \*
  • - nアスタリスク
  • \s* - 0以上の空白。
  • (\w+) - グループ1 - 1+ word chars。
+0

これはperl互換正規表現ですか?私はこれをgrepやobjective-cと一緒に使うことを考えました。各構成要素が何を意味しているかを説明する詳細が大好きですありがとうございました。 – Tiago

+0

Objective-CはICU正規表現ライブラリを使用しており、この正規表現はObjective-Cで動作します。 Objective-C文字列リテラルに二重バックスラッシュを使用することを忘れないでください。 –

+0

[このObjective-Cデモ](https://ideone.com/lOA63l)を参照してください。 –

関連する問題