gpt4 book ai didi

ios - 用于提取负数作为方程一部分的 NSString 正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:06 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式(在 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])])
{

}

正则表达式 ((^\\d)(-)){0,1} 是我尝试仅在 - 上没有前导数字时才匹配负数部分的地方(即 1÷4 而不是 -1÷4),这是行不通的,因此出现了问题。我希望我已经充分解释了这一点!提前致谢。

最佳答案

如果你想避免匹配-如果它前面有一个数字,你可以使用

"((?<!\\d)-)?[\\d.]+[÷×][\\d.]+"

尾随?((?<!\\d)-)?使 -可选的,如果它存在,负向后视 (?<!\\d)如果前面有数字,则阻止匹配。

[\\d.]+火柴0-9.一次或多次。

注意,仅使用 java.util.regex 进行了测试类,虽然我认为 NSRegularExpression类是相似的。

编辑:

我发现很难准确理解您要做什么,但是如果您只是想匹配一个前面没有数字的负数,您可以使用

"(?<!\\d)-\\d+(\\.\\d+)?"

关于ios - 用于提取负数作为方程一部分的 NSString 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14862879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com