使用正则表达式获取单词在IOS中定义了字符和粗体样式

时间:2014-07-23 03:25:00

标签: ios regex

我需要在句子输入中加入一个单词并加粗它的风格。 这是我的代码

NSString *regexString = @"(\\<-\\w+(\\s\\w+)*\\->)\\s";

NSString *aString = @"Notes on iOS7 going to take a <-lot-> of getting used to!";

NSRegularExpression *regex1 = [NSRegularExpression
                              regularExpressionWithPattern:regexString
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];

NSString *match =
[aString substringWithRange:[regex1 rangeOfFirstMatchInString:aString
                                                     options:NSMatchingCompleted range:NSMakeRange(0, [aString length])]];

NSLog(@"Matched string: %@", match);

字符串:关于iOS7的注释将采用&lt; -lot-&gt;习惯了!

在NSLog中打印的字符串:匹配字符串:&lt; -lot-&gt;

在这里我只需要得到&#34;很多&#34;单词

预期打印:匹配字符串:很多

我还需要在这样的句子中更改这个单词的类型:关于iOS7的注释要习惯很多

1 个答案:

答案 0 :(得分:1)

以下是打印该字词的示例代码:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=<-)\\w+(?=->)" options:0 error:&error];
if (regex) {
    NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:subject options:0 range:NSMakeRange(0, [subject length])];
    if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
        NSString *result = [string substringWithRange:rangeOfFirstMatch];
    } else {
        // Match attempt failed
    }
} else {
    // Syntax error in the regular expression
}

<强>解释

  • 后瞻(?<=<-)断言前面的内容是<-(但不匹配)
  • \w+匹配单词字符
  • 前瞻(?=->)声称接下来是->(但不匹配)

<强>参考