我正在尝试使用正则表达式来过滤掉烹饪食谱成分中的测量值、准备信息和其他形容词。我想要以下结果:
给出时:
1 cup (3oz) sliced carrots, cut lengthwise
我想:
carrots
使用 Mac 应用程序“模式”处理正则表达式,以下表达式可以按需要工作:
(?<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-C 正则表达式测试器,但不适用于我的代码。