gpt4 book ai didi

ios - 在 Swift 3 中使用带有管道分隔符的正则表达式来过滤匹配项

转载 作者:行者123 更新时间:2023-11-30 12:45:18 26 4
gpt4 key购买 nike

到目前为止,已经看过相当多的正则表达式 stackoverflow 问题,我有点困惑为什么我的正则表达式没有过滤掉我想要删除的子字符串。我知道我需要尽快逃离我拥有的任何其他逃生方式。

首先,我在 String 上有一个扩展,如下所示:

extension String {
func stringByRemovingRegexMatches(pattern: String, replaceWith: String = "") -> String? {
do {
let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
print(regex)
let range = NSMakeRange(0, self.characters.count)
return regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
} catch {
return nil
}
}
}

假设文本是:

+++cta\n[![](http://media.test.com/1.jpg)](http://www.test.com/slideshow)\n\n+++\n\n<span class=\"s1\">Hello</span><span class=\"s2\"> World\n\n[cm_image id=\"13501068\"]<img style=\"width: 100%;\" src=\"http://www.test.com/1.jpg\" alt=\"\" />[/cm_image]\n\n[#c: /c/56be30deff2afb50ef000026]||||||

我希望它返回 Hello World\n在我的 Swift 项目中,但它似乎只过滤掉 <span> :

+++cta\n[![](http://media.test.com/1.jpg)](http://www.test.com/slideshow)\n\n+++\n\nHello World\n\n[cm_image id=\"13501068\"]<img style=\"width: 100%;\" src=\"http://www.test.com/1.jpg\" alt=\"\" />[/cm_image]\n\n[#c: /c/56be30deff2afb50ef000026]||||||

我在 Swift 中的正则表达式字符串是:

"\\+(^)\\+|\\\\n\\[(.*)\\|\\|\\|\\|\\|\\||\\\\n\\[c(.*)\\\\n\\\\n|\\+(.*)\\+\\\\n\\\\n|<[^>]+>"

您会注意到上面我有一个打印语句 regex它与我放入 regexr 的内容相匹配,字符串是:

<NSRegularExpression: 0x7ff8d576df00> \+(^)\+|\\n\[(.*)\|\|\|\|\|\||\\n\[c(.*)\\n\\n|\+(.*)\+\\n\\n|<[^>]+> 0x1

\+(^)\+|\\n\[(.*)\|\|\|\|\|\||\\n\[c(.*)\\n\\n|\+(.*)\+\\n\\n|<[^>]+>

它们完全相同。

为了进一步说明,我有一个 regexr here 的链接.

我在 Swift 中做错了什么吗?是不是swift不认识(.*) ?任何帮助将不胜感激。

最佳答案

因此,确保 startIndex 和 endIndex 之间有 ((.|\n)*) 可以解决此问题,因为我希望所有字符或返回值都在边界之间。

关于ios - 在 Swift 3 中使用带有管道分隔符的正则表达式来过滤匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41711637/

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