Regex &&;及;
您能给我推荐一个正则表达式吗?它只匹配字符串中的“&”,而不匹配“&&” 例如,输入字符串Regex &&;及;,regex,string,split,stringtokenizer,Regex,String,Split,Stringtokenizer,您能给我推荐一个正则表达式吗?它只匹配字符串中的“&”,而不匹配“&&” 例如,输入字符串 s1 = "STRING1 && STRING2 & STRING3 AND STRING4"; 我正在用函数拆分输入字符串- String[] param = s1.split('&'); or s1.split('&(?!&&)'); 拆分后的结果应为- param[1] = STRING1 && STRING2 para
s1 = "STRING1 && STRING2 & STRING3 AND STRING4";
我正在用函数拆分输入字符串-
String[] param = s1.split('&'); or s1.split('&(?!&&)');
拆分后的结果应为-
param[1] = STRING1 && STRING2
param[2] = STRING3 AND STRING4
谢谢你的回复
Dev您可以在这里使用regex中的
(?<!&)&(?!&)
(?
上面的正则表达式与一个&
匹配,前面或后面都没有另一个&
您也可以使用此模式:
[^&]&[^&]
调用某种特定于语言的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语法):
请说明并标记您在问题中使用的语言。由于NSRegularExpression
,我希望使用iOS平台。很抱歉标记错误,但图片中没有iOS内容。除此之外,我还有一个疑问,如果输入字符串为---->STRING1&&STRING2&STRING3,在这种情况下,我的站点上的这个正则表达式失败了。您可以吗帮帮我?@DevendraW,在我这边可以很好地工作。字符串在&
被拆分为STRING1&&STRING2 | STRING3
。输入字符串-STRING1&&STRING2 | STRING3应该拆分为1.STRING1&&2.STRING2 | STRING3它不工作,因为它选择从哪个“&&&&&STRING2”拆分?我希望第三个用于拆分。你知道吗有任何其他正则表达式的建议吗?明白了-正则表达式应该是-(?@DevendraW,我的意思是输入STRING1&&STRING2&STRING3
将被拆分为(1)STRING1&&STRING2
和(2)`STRING3(
| `仅用于显示不同的部分。)我假设&&&
是作为数据的一部分出现的,并且不是一个可以拆分的运算符。我不确定您在这里解析的到底是什么,因此目前无法推荐更好的正则表达式。
// 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_ ");