0

一致する次の正規表現パターンがあります。

NSString *pattern=[NSString stringWithFormat:@"%@(.*)%@", key, key2];

if key=\\\\[\\\\\[ and key2=\\\\]\\\\]それで、キーを含む文字列と含まれるテキストを取得しているとしましょう。しかし、問題は、複数の一致がある場合、キーの最初の出現とキー2の最後の出現のみを取り、それらの間に含まれるテキストとキーを提供することです。例: これは [[some]] [[text]] です。これにより[[some]] [[text]]、私が望む1つの一致として[[some]]、および[[text]]個別の一致として得られます。すべての一致を個別に与えるには、どのように変更すればよいですか?

4

1 に答える 1

1

引用符の間の文字列を解析したい初心者のパーサー作成者を悩ませているのと同じことです。

\\".*\\"

で十分ですが、これが間のすべてのテキストに一致すると驚くでしょう

"a string" and also "another string"

この背後にある理由は、* 演算子が貪欲であることです。期待される結果を得るには、文字セットの否定を使用する必要があります。

\\[\\[[^\\[\\]]*\\]\\]

お役に立てれば。

于 2012-07-13T10:13:13.310 に答える