【发布时间】:2014-01-16 20:01:07
【问题描述】:
您好,我遇到了一个复杂的正则表达式情况。
mainString = @"Main Term (Rounded) [Square] ~a~d~j~."
我需要像这样返回它
modifiedString* = @"Main Term (Rounded) [Square] adj."
所以~ 之后的每个字符都必须是斜体或任何属性。
而且我需要修改后"adj."的范围,以便我可以添加属性。
谢谢。
NSError *error3 = nil;
NSRegularExpression *SHRegex = [NSRegularExpression regularExpressionWithPattern:@"\\~(.|)" options:0 error:&error3];
NSArray *matches3 = [SHRegex matchesInString:mainString options:0 range:NSMakeRange(0, [mainString length])];
NSUInteger *numberOfMatches = [SHRegex numberOfMatchesInString:mainString options:0 range:NSMakeRange(0, mainString.length)];
NSString *modifiedString = [SHRegex stringByReplacingMatchesInString:mainString options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
for (NSTextCheckingResult *match in matches3) {
NSRange matchRange = [match range];
NSRange firstHalfRange = [match rangeAtIndex:1];
//NSRange secondHalfRange = [match rangeAtIndex:2];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:0 green:0 blue:0 alpha:1] range:matchRange];
//[string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:firstHalfRange];
}
【问题讨论】:
-
澄清一下:您想从字符串中删除所有
~字符,并返回被这些字符包围的所有字符的位置吗?它总是~a~b~c~d~还是~abc~ d ~e~- 在后一种情况下,您是否希望返回abc d e? `d` 会成为“特殊匹配字符”的一部分吗?你有~a~d~j~.并希望adj.是“特别的”。这是否意味着您只需要一个波浪号在特殊字符之前? -
它可以是
Main ~a~d~j~. Sub ~a~d~v~.,是的,我想删除~,并返回剩余adj.和adv.的范围或位置。Main和Sub并不特殊。
标签: ios regex nsstring nsregularexpression