我正在尝试使用正则表达式(在 iPhone 应用程序上的 Objective-C 中)匹配数学方程,并且可以使用帮助来提出适用于下面列出的第二种情况的正则表达式。
我创建了以下 Objective-C 代码来提取表单的等式,(1÷4)
或者(-1÷4)
如果在乘积或除数前面有一个负数:(我在这里包括这个以帮助解释我试图回答的问题)
NSString* equation = @"1+(-1÷4)";
NSString* matcher = @"(-){0,1}(\\.|\\d)+(÷|×){1,}";
NSRegularExpression *equation_regex = [NSRegularExpression regularExpressionWithPattern:matcher options:NSRegularExpressionCaseInsensitive error:nil];
while([equation_regex numberOfMatchesInString:working_function options:0 range:NSMakeRange(0, [equation length])])
{
// regex finds '-1÷4'
}
但是,对于以下等式,这会分崩离析: 3-1÷4 其中不应提取 -1,因为它不是等式中 1÷4 的一部分。
我试图改变正则表达式(以我有限的正则表达式专业知识!)排除 -1 IFF 前面有一个数字 - 通过以下方式:
NSString* equation = @"3-1÷4";
NSString* matcher = @"((^\\d)(-)){0,1}(\\.|\\d)+(÷|×){1,}";
NSRegularExpression *power_regex = [NSRegularExpression regularExpressionWithPattern:power_regex_pattern options:NSRegularExpressionCaseInsensitive error:nil];
while([power_regex numberOfMatchesInString:working_function options:0 range:NSMakeRange(0, [working_function length])])
{
}
如果 - (即not )上没有前导数字,则正则表达式((^\\d)(-)){0,1}
是我尝试仅匹配负数部分的地方,这不起作用,因此是问题。我希望我已经充分解释了这一点!提前致谢。1÷4
-1÷4