Ios 使用NSRegularExpression拆分由NSString组成的方程并查找方程的左侧

Ios 使用NSRegularExpression拆分由NSString组成的方程并查找方程的左侧,ios,objective-c,regex,nsregularexpression,Ios,Objective C,Regex,Nsregularexpression,我的应用程序中有如下字符串: b=c+32 我使用下面的代码片段解析字符串,将其拆分为b、=、c、+、32。那很好。然而,我需要知道哪个变量是=运算符的左侧。此变量在表达式中始终位于第一位。在NSRegularExpressions中是否有方法为我提供结果索引,以便我可以比较它们以查看=。如果有一个更好的匹配,这将给我的第一个元素,我也会满足 下面是拆分它们的代码 NSString * textpattern = @"[A-Za-z]+"; NSString * n

我的应用程序中有如下字符串:

    b=c+32
我使用下面的代码片段解析字符串,将其拆分为b、=、c、+、32。那很好。然而,我需要知道哪个变量是=运算符的左侧。此变量在表达式中始终位于第一位。在NSRegularExpressions中是否有方法为我提供结果索引,以便我可以比较它们以查看=。如果有一个更好的匹配,这将给我的第一个元素,我也会满足

下面是拆分它们的代码

     NSString * textpattern = @"[A-Za-z]+";
     NSString * numberpattern = @"[0-9]+";
     NSString * opPattern = @"[-+/*]";
     NSString * copPattern = @"=";


    NSRegularExpression * reg = [NSRegularExpression regularExpressionWithPattern: @"(\\d+\\.\\d+)|(\\d+)|([a-z])|([+-/*=///^])|([/(/)])" options:0 error:nil];
    NSArray *matches = [ reg matchesInString: exp
                                     options: 0
                                       range:NSMakeRange(0, [exp length])];

    for (NSTextCheckingResult *match in matches) {
        NSString* text = [exp substringWithRange:[match range]];

     NSMutableDictionary *term = [NSMutableDictionary new];


     if ([text doesMatchRegStringExp:textpattern])
    {
        NSLog(@"variable");


        [term setObject:@"variable" forKey:@"name"];


    }
    else if ([text doesMatchRegStringExp:numberpattern])
    {
        NSLog(@"number");


        [term setObject:@"number" forKey:@"name"];


    }
    else if ([text doesMatchRegStringExp:opPattern])
    {
        NSLog(@"op");

        [term setObject:@"op" forKey:@"name"];


    }
    else if ([text doesMatchRegStringExp:copPattern])
    {
        NSLog(@"cop");


        [term setObject:@"cop" forKey:@"name"];


    }
    else
    {


        [term setObject:@"other" forKey:@"name"];

    }

        }




//  NSString+RegExpExtensions.h
#import <Foundation/Foundation.h>

@interface NSString (RegExpExtensions)
- (BOOL)doesMatchRegStringExp:(NSString *)string;

@end

#import "NSString+RegExpExtensions.h"

@implementation NSString (RegExpExtensions)
- (BOOL)doesMatchRegStringExp:(NSString *)string {
    NSPredicate *regExpPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", string];
    return [regExpPredicate evaluateWithObject:self];
}
@end

多谢各位

根本不清楚你想做什么。你为什么不把你要解决的问题说得清楚、简洁呢?那我们也许能帮上忙。嗨,邓肯,我编辑了这个问题。请让我知道它现在是否更有意义。对于前面的歧义,我深表歉意。您可以将正则表达式用于lex,但不能解析数学表达式。使用ICU正则表达式库的NSRegularExpression没有这样做的能力。