0

Objective-C の文字列内で「Java スタイル」のコメントを見つけて処理しようとしています。

ほとんど機能する正規表現のスニペットがいくつかありますが、1 つのハードルで立ち往生しています。さまざまなオプションがさまざまなスタイルを機能させるようです。

たとえば、これを使用して一致させています。

NSArray* matches = [[NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionAnchorsMatchLines error:nil] matchesInString:string options:0 range:searchRange];

ここのオプションを使用すると、単一行のコメント (//) を正常に検索して処理できますが、複数行 (/* */) を検索して処理することはできません。一行コメントの。

本当に dot-matches-line-separators が必要だと思いますが、1 行のコメントの終わりを見つけるより良い方法が必要ですか?

私がこれまで持っている正規表現は次のとおりです。

@"/\\*.*?\\*/"
@"//.*$"

ドットが行セパレーターと一致するかどうかは明らかですが、2番目の行(単一行)は決して「終了」しませんが、これを修正するにはどうすればよいですか? 次のような単一行の提案がいくつか見つかりました。

@"(\/\/[^"\n\r]*(?:"[^"\n\r]*"[^"\n\r]*)*[\r\n])"

しかし、それはまったく機能していないようです!

ご指摘ありがとうございます。

4

1 に答える 1

0

したがって、私が持っていた例はかなり近いことがわかりました。何らかの理由で、必要のない追加のバックスラッシュがいくつかありました。現在は次のようになっています。

@"(//[^\"\n\r]*(?:\"[^\"\n\r]*\"[^\"\n\r]*)*[\r\n])"

(つまり、Objective-C のコード内)。そして、私自身のポイントを明確にするために、私は DotMatchesLineSeparator を使用していますが、これは私が期待したとおりに機能しています。

于 2013-11-10T10:43:29.373 に答える