gpt4 book ai didi

ios - 使用正则表达式删除 Objective-C 中的特定#tag

转载 作者:行者123 更新时间:2023-11-28 21:51:08 32 4
gpt4 key购买 nike

我正在尝试解析 Objective-C 中的字符串以删除与特定#tagged 字词完全匹配的内容。我可以创建正则表达式并毫无问题地删除特定单词,但是当我尝试删除带有前导“#”的字符串时,它不起作用。

这是我的代码:

NSString *originalString = @"This is just a #test that isn't working";
NSString *hashTag = @"#test";
NSString *placeholder = @"\\b%@\\b";
NSString *pattern = [NSString stringWithFormat:placeholder, hashTag];
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];

NSString *modifiedString = [regex stringByReplacingMatchesInString:originalString
options:0
range:NSMakeRange(0, [originalString length])
withTemplate:@""];

问题是即使原始字符串包含字符串#test,它也不会被删除。如果我将“#test”换成“test”,一切正常,但这不是我想要做的。我错过了什么?

最佳答案

因为空格和#之间不存在单词字符.两者都是非单词字符。所以我建议你删除开始 \\b

NSString *placeholder = @"%@\\b";

使用负面回顾。

NSString *placeholder = @"(?<!\\S)%@\\b";

(?<!\\S)断言在匹配之前不存在非空格字符的否定回顾。

要进行精确的字符串匹配,我建议您使用这个 @"(?<!\\S)%@(?!\\S)"正则表达式。 (?!\\S)否定前瞻,它断言匹配后不会跟一个非空格字符。

DEMO

关于ios - 使用正则表达式删除 Objective-C 中的特定#tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28290490/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com