更新0
以下のコードを追加しましたfor (... match in)
。
更新0
私の原文は約40行ごとに繰り返されます。以下に、以下の2回の繰り返しごとに8行を示します。完全なデータセットはここにあります。「[Board]」行から、引用符の間に1桁または2桁の数字が必要です。「[Dealer]」行から、引用符の間に1文字が必要です。
[Board "1"]
[Dealer "N"]
[Vulnerable "None"]
[Deal "N:Q952.652.KJT4.95 T.KQT84.A865.J73 K8763.A7.Q.KQT84 AJ4.J93.9732.A62"]
[Scoring ""]
[Declarer ""]
[Contract ""]
[Board "2"]
[Dealer "E"]
[Vulnerable "NS"]
[Deal "E:K8542.3.4.AT7532 J76.K7.AT85.KQJ8 QT3.AJ84.KJ963.4 A9.QT9652.Q72.96"]
[Scoring ""]
[Declarer ""]
[Contract ""]
次の正規表現は機能しますが、私のテキストの30以上の一致ではなく、1つの一致のみを取得します。
NSString *toMatch = @"\\[Board \"([0-9][0-9]?)\"\\].*\\[Dealer \"([NEWS])\"\\]";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:toMatch options:NSRegularExpressionDotMatchesLineSeparators error:&error];
for (NSTextCheckingResult* match in [regex matchesInString:string options:NSRegularExpressionDotMatchesLineSeparators range:NSMakeRange(0, [string length])])
{
NSLog(@"Number of ranges in match: %u", match.numberOfRanges);
for (NSUInteger i = 0; i < match.numberOfRanges; ++i)
{
NSRange matchedRange = [match rangeAtIndex: i];
NSString* tstring = [string substringWithRange: matchedRange];
NSLog(@"range %lu string: %@", (unsigned long)i, tstring);
}
}
問題はラインフィードにあると思われますが、修正方法とオプションがわかりません。これは、この質問の続きです。
複数の一致を取得するために正規表現パターンを修正するにはどうすればよいですか?
(さらに、「[Deal]」行に次のものが必要ですが、今は無視しましょう。最初は「:」の後、スペースの前、2番目と3番目はスペースの間にある4つの別々のグループが必要です。最後は、最後のスペースの後、引用符の前のすべてです。)