请你建议我正则表达式只会匹配'&'来自字符串但不是'&&'。
E.g。输入字符串
s1 = "STRING1 && STRING2 & STRING3 AND STRING4";
我正在用函数 -
拆分输入字符串String[] param = s1.split('&'); or s1.split('&(?!&&)');
拆分后的结果应为 -
param[1] = STRING1 && STRING2
param[2] = STRING3 AND STRING4
感谢您的回复。
开发
答案 0 :(得分:2)
答案 1 :(得分:1)
您也可以使用此模式:
[^&]&[^&]
并调用某些特定于语言的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);
}
答案 2 :(得分:0)
它可能不是很优雅,但我会取代隔离的&为了别的什么,然后我会做分裂。
像这样(伪代码,而不是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_ ");