你能建议我正则表达式吗,它只匹配字符串中的"&",而不是"&&"。
例如 输入字符串
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_ ");