1

構造体の名前を抽出する正規表現を作成しようとしていますが、何も見つかりません。私が取り組んでいる手順は次のとおりです。

  1. 文字列'publicstruct'を探します。
  2. すべての文字AZazを1回以上検索し、それらをグループ化します。
  3. 次に、改行、キャリッジリターン、またはその他の文字を1回以上探します(これにより、中かっこが開き、スペースが入る可能性があります)。
  4. 最後に}を探します

/

public struct ABC{
    int a;
    int b;
}

public struct DEF {
    ulong d;
    string e;
}

Regex:
    public struct ([A-Za-z]+)[{|\r|\n|.]+}

Should give:
    ABC
    DEF

正規表現で何も見つからないのはなぜですか?

4

2 に答える 2

2

ボディには、 で一致する以上のものが含まれているため[{|\r|\n|.]+です。

名前だけが必要な場合は、次を使用できます。

public struct (\w+)\s*{

[{|\r|\n|.]+[{\r\n.|]+(括弧は文字クラスであり、グループではありません) と同じですが、おそらく[^}]+.

于 2012-06-19T09:26:05.813 に答える
1

「ABC」部分のみを抽出するには、正規表現で正の先読みが必要になります。これに対する簡単な解決策は次のとおりです。

(?<=(public struct ))[\w]+

したがって、指定された例では、次のみが抽出されます。

  • ABC
  • 防御力

編集: これは実際の例とのリンクです:

http://gskinner.com/RegExr/?319vk

于 2012-06-19T09:26:23.410 に答える