1

指定された領域で文字列を照合する方法を知りたい: たとえば、C++ コード スニペットがあります。

/*
    This is .... bla bla bla...int, float,...
    @author: Tom
*/
int a;
float b;

int次に、コメントのfloat外側のようなキーワードを見つけたいのですが、どうすればよいですか? 事前検索を利用できないかと考えていました。しかし、単純なサンプルでは、\b\w+(?<=er)\b​​「worker」、「super」などの単語に一致します。これらの結果の部分文字列のみが前にer必要な場合はどうすればよいですか。別の例では、C++ コードの行コメントのみを一致させる必要がある場合、を使用し//.*?\n\n結果にも含まれていますが、必要ありません... 更新: 問題を明確に説明したかどうかわかりません。また、質問にタイトルを付ける方法もわかりません.. . :(

4

1 に答える 1

2

ソース コードを正規表現で解析するべきではありません。仕事に適したツールを使用してください... コンテキストを考慮に入れるのが非常に難しいため、正規表現は適切なツールではありません。あなたはすでにこの問題を自分で観察しています。

そうは言っても、通常、正規表現でグループを使用して、一致の一部のみを取得できます。

たとえば、正規表現a(b)cは string に一致しますabcが、結果には 2 つのグループが含まれます。

  1. 最初のグループは完全一致abcです。
  2. 2 番目のグループは、最初のサブグループbです。

C++ の単一行コメントに一致する例は、次のようになります。

//(.*?)\n

最初のサブグループには、コメント テキストのみが含まれます。

于 2012-10-11T12:56:52.713 に答える