1

我有包含 [[ and ]] 和 {{ and }} 出现的字符串。哪个正则表达式可以在以下代码中工作,以便 [ ] { } 的单次出现保持不变?

NSString* initialString = @"[[hi]] {{this}} {is} [a] {{string}}";
NSString* regex = @""; // Which regex would work
NSString* finalString = [match stringByReplacingOccurrencesOfRegex:regex withString:@""];

预期输出:

嗨,这个 {is} [a] 字符串

4

2 回答 2

0

试试这样可能对你有帮助。

NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"[[]]{{}}"];// declare set of unwanted charecters here.
NSString* initialString = @"[[hi]] {{this}} {is} [a] {{string}}";

initialString = [[initialString componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];

运单:-

 hi this is a string
于 2013-05-09T06:40:41.687 回答
0

那么最明显的事情是:

@"\\{\\{|\\}\\}|\\[\\[|\\]\\]"

从字面上看,它只是指定匹配{{or}}[[or ]],因为 {、}、[ 和 ] 都是通常指定正则表达式的语法的所有部分,并且因为斜线本身需要在字符串文字中转义,所以各种斜线潜入其中。

所以例如

NSRegularExpression *expression = [NSRegularExpression
        regularExpressionWithPattern:@"\\{\\{|\\}\\}|\\[\\[|\\]\\]"
        options:0
        error:nil];

NSString *initialString = @"[[hi]] {{this}} {is} [a] {{string}}";
NSString *finalString =
    [expression 
        stringByReplacingMatchesInString:initialString
        options:0
        range:NSMakeRange(0, [initialString length])
        withTemplate:@""];

NSLog(@"final string: %@", finalString);

输出:

2013-05-09 00:15:57.699 Untitled[1064:707] final string: hi this {is} [a] string
于 2013-05-09T07:17:28.003 回答