2

Java から、正規表現に大きく依存する Objective C にフレームワークを移植しています。残念ながら、Java 正規表現 API は Objective C API とは大きく異なります。

NSRegularExpressionクラスを使用して正規表現を評価しようとしています。Java では、これはまったく異なります。Pattern クラスと Matcher クラスを使用する必要があります。

私が理解できないものがあります(とりわけ)。Objective CのMatcher.LookingAt()に相当するものは何ですか? それをコードに入れる。次のコードを Objective C に翻訳するとどうなりますか?

Pattern pattern = Pattern.compile("[aZ]");
boolean lookingAt = pattern.matcher("abc").lookingAt();

知ってる人よろしくお願いします!(ところで、上記の例では、lookingAt ブール値に true を代入しています)

4

2 に答える 2

4

私はそれを考え出した!これは、Javaコードに相当するNSRegularExpressionです。

NSError *error = nil;
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"[aZ]" options:0 error:&error];
if (error) {
    // Do something when an error occurs
}
NSString *candidate = @"abc";
BOOL lookingAt = [expression numberOfMatchesInString:candidate options:NSMatchingAnchored range:NSMakeRange(0, candidate.length)] > 0;

ここで強調するのは、式を実行するときのNSMatchingAnchoredオプションです。ドキュメントによると:

NSMatchingAnchored一致が検索範囲の先頭にあるものに限定されることを指定します。コンテキスト内の定数の説明については、enumerateMatchesInString:options:range:usingBlock:を参照してください。

それがまさに私が探していたものです!

于 2012-04-15T14:07:32.633 に答える
3

You may do something like

NSString *regex = @"ObjC";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", regex]; 

if( [predicate evaluateWithObject:myString]) 
    NSLog(@"matches");
else
    NSLog(@"does not match");

take a look at Predicate Format String Syntax guide for further options.

于 2012-04-15T11:33:03.207 に答える