正規表現を使用して、レシピの材料を調理する際の測定値、準備情報、およびその他の形容詞を除外しようとしています。次の結果が必要です。
与えられたとき:
1 cup (3oz) sliced carrots, cut lengthwise
が欲しいです:
carrots
Macアプリ「Patterns」を使用して正規表現を処理すると、次の式が希望どおりに機能します。
(?<word>[a-zA-Z0-9]+)(?<! cut|cup|sliced|lengthwise|[(0-9)+(oz)?])\b
ただし、次のコードでこれを使用すると、一致するものはありません。「matches」配列は空です。
NSString *phrase = [NSString stringWithString:@"1 cup (3oz) sliced carrots, cut lengthwise"];
NSRegularExpression *nameExpression = [NSRegularExpression regularExpressionWithPattern:@"(?<word>[a-zA-Z0-9]+)(?<! cut|cup|sliced|lengthwise|[(0-9)+(oz)?])\b" options:NSRegularExpressionSearch error:nil];
NSArray *matches = [nameExpression matchesInString:phrase
options:0
range:NSMakeRange(0, [phrase length])];
目標言語としてObj-Cを使用するように練習アプリを設定しています。一致しないのはなぜですか?
?<word>
更新:は無関係であり、問題は?<!
文字のシーケンスにあることを発見しました。繰り返しますが、式
([a-zA-Z0-9]+)(?<! cut|cup|sliced|lengthwise|[(0-9)+(oz)?])\b
私のobjective-cregexテスターでは機能しますが、私のコードでは機能しません。