&& 和 & 的正则表达式



你能建议我正则表达式吗,它只匹配字符串中的"&",而不是"&&"。

例如 输入字符串

s1 = "STRING1 && STRING2 & STRING3 AND STRING4";

我正在用函数拆分输入字符串 -

String[] param = s1.split('&'); or s1.split('&(?!&&)');

拆分后的结果应为 -

param[1] = STRING1 && STRING2  
param[2] = STRING3 AND STRING4

感谢您的回复。

开发

你可以在这里使用正则表达式中的环顾四周

(?<!&)&(?!&)

上面的正则表达式匹配一个既不早也不后跟另一个&&

您也可以使用此模式:

[^&]&[^&]

调用某些特定于语言的SPLIT函数应该可以完成这项工作。

如果这是针对 iOS 平台的,请在单独的应用中尝试此示例:

NSString *string = @"STRING1 && STRING2 & STRING3 AND STRING4"; //[NSString stringWithFormat:@"%@", @""];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[^&]&[^&]"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:string
                                                    options:0
                                                      range:NSMakeRange(0, [string length])];
NSLog(@"numberOfMatches : %d", numberOfMatches);
NSArray *matches = [regex matchesInString:string
                                  options:0
                                    range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) // adjust loop per your criteria
{
    NSRange matchRange = [match range];
    // Pick the separator
    NSLog(@"::::%@", [string substringWithRange:matchRange]);
    // Splitted string array
    NSArray *arr = [string componentsSeparatedByString:[string substringWithRange:matchRange]];
    NSLog(@"Splitted String : %@", arr);
}

它可能不优雅,但我会用其他东西替换孤立的 &,然后我会进行拆分。

像这样的东西(伪代码,不是IOS语法):

// s1 = "STRING1 && STRING2 & STRING3 AND STRING4";
aux=s1.replaceAll("([^&])&([^&])","$1 _SEPARATOR_ $2");
// in case of & at the beginning
aux=aux.replaceAll("^&([^&])"," _SEPARATOR_ $2");
// in case of & at the end
aux=aux.replaceAll("([^&])&$","$1 _SEPARATOR_ ");
// now aux="STRING1 && STRING2  _SEPARATOR_  STRING3 AND STRING4";
String[] params=aux.split(" _SEPARATOR_ ");

相关内容

  • 没有找到相关文章

最新更新