与えられた文字列をスキャンして数値を探しています。「v/v。/vol/ vol。」の後に数字を入れたり、括弧内に入れたりすることはできません。これが私が持っているものです:
NSString *regex = @"(?i)(?<!v|vol|vol\\.|v\\.)\\d{1,4}(?![\\(]{0}.*\\))";
NSLog(@"Result: %@", [@"test test test 4334 test test" stringByMatching:regex]);
NSLog(@"Result: %@", [@"test test test(4334) test test" stringByMatching:regex]);
NSLog(@"Result: %@", [@"test test test(vol.4334) test test" stringByMatching:regex]);
腹立たしいことに、これは機能しません。私の正規表現は4つの部分に分けることができます:
(?i)
-正規表現の大文字と小文字を区別しない
(?<!v|vol|vol\\.|v\\.)
-v/v。/vol/volのネガティブルックビハインドアサーション。
\\d{1,4}
-私が探している番号、1〜4桁。
(?![\\(]{0}.*\\))
-否定的な先読みアサーション:(の前に()がない限り、数値を)の前に置くことはできません。
不思議なことに、私が後ろ向きのアサーションを取り除けば、それは機能します。ここでの問題は何ですか?ICUの正規表現構文を使用するRegexKitLiteを使用しています。