NSString 替换正则表达式。

3

我有一个字符串,如下所示:

NSString* msg = @"Hello this is a new message to @[123:Dr Zoidberg] and his nippers";

我想使用-stringByReplacingMatchesInString:options:range:withTemplate:方法将这个模式转换成:

NSString* msg = @"Hello this is a new message to Dr Zoidberg and his nippers"; 

这是我目前的进展:

这是我目前的进展:

NSString* msg = @"Hello this is a new message to @[123:Dr Zoidberg] and his nippers";
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern: @"????"
                                                                       options: NSRegularExpressionCaseInsensitive
                                                                         error: nil];

NSString* plainText = [regex stringByReplacingMatchesInString: msg
                                                      options: 0
                                                        range: NSMakeRange(0, [msg length])
                                                 withTemplate: @"$2"];

有人能帮我解释一下@"????"模式吗?


什么是模板格式?在 @[123:Dr Zoidberg] 中,可以用什么替换数字 123 - mmdemirbas
3个回答

2
这是我想要的模式:@(.*?):(.*?)]。感谢 这个问题 的帮助。

0

尝试替换

@\[\d+:(.+?)\]

使用 \1

说明:

匹配 @ 后跟着 [,然后是任意数量的数字,接着是逗号。从这一点开始获取文本,直到找到闭合方括号。

如果数字和 : 之间可以有任何类型的空格,则可以使用此方法

@\[\d+\t*:(.+?)\]

它在记事本++上运行。它匹配/不匹配什么?它看起来很像mmdemirbas评论的那个,也许问题在于开头的方括号。 - Gabber
嗯,123:之间可以有空格(或任何缩进字符)吗?如果可以,您可以以这种方式编写它:@\[\d+\t+?:(.+?)\] - Gabber
“?” 的意思是 “不要贪心地使用 +”,但在这种情况下,实际上可以省略它(我的错误,我会编辑答案)。 - Gabber
我理解的是:您必须将 withTemplate: @"$2" 替换为 withTemplate: @"$1",告诉程序使用第一个替换组而不是第二个。 - Gabber

0

搜索 @\[123:(.*?)\] 并替换为 \1


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接