到目前为止看了很多正则表达式stackoverflow问题,我有点困惑为什么我的正则表达式没有过滤掉我想删除的子字符串。我知道很快,我需要逃避任何其他逃脱。
首先,我对String有一个扩展名,如下所示:
dispatch_async(dispatch_get_main_queue(), ^{
[BrightnessSlider sendActionsForControlEvents: UIControlEventTouchUpInside];
[BrightnessSlider sendActionsForControlEvents: UIControlEventTouchUpInside];
});
让我们说例如文字是:
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
}
}
}
我想让它在我的Swift项目中返回+++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
:
<span>
我在Swift中的正则表达式字符串是:
+++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]||||||
上面我注意到我有"\\+(^)\\+|\\\\n\\[(.*)\\|\\|\\|\\|\\|\\||\\\\n\\[c(.*)\\\\n\\\\n|\\+(.*)\\+\\\\n\\\\n|<[^>]+>"
的打印声明,它与我放入regexr的内容相符,字符串为:
regex
他们都完全相同。
为了进一步说明,我有一个指向regexr here的链接。
我在Swift中做错了吗?难道swift无法识别<NSRegularExpression: 0x7ff8d576df00> \+(^)\+|\\n\[(.*)\|\|\|\|\|\||\\n\[c(.*)\\n\\n|\+(.*)\+\\n\\n|<[^>]+> 0x1
\+(^)\+|\\n\[(.*)\|\|\|\|\|\||\\n\[c(.*)\\n\\n|\+(.*)\+\\n\\n|<[^>]+>
吗?任何帮助将不胜感激。
答案 0 :(得分:0)
因此,确保我的startIndex和endIndex之间有((.|\n)*)
解决了这个问题,因为我想要所有字符或在我的界限之间返回。