ios - 在 Swift 中搜索以\n\n 开头的字符串

标签 ios regex swift

嘿,我需要在我的 UILables 中增加双倍行距换行符的间距。我想搜索我的字符串并找到所有以 \n\n 开头的字符串。例如“Hello world\n我在下一行\n\n现在我在下一行并且它的间距比以前大\n现在我回到正常间距”。我无法为此找出正则表达式。我正在尝试:

let regExRule = "^\n\n*"

并将其传递给此函数:

func matchesForRegexInText(regex: String, text: String) -> [String] {

        do {
            let regex = try NSRegularExpression(pattern: regex, options: [])
            let nsString = text as NSString
            let results = regex.matchesInString(text,
                                                options: [], range: NSMakeRange(0, nsString.length))
            return results.map { nsString.substringWithRange($0.range)}
        } catch let error as NSError {
            print("invalid regex: \(error.localizedDescription)")
            return []
        }
    }

但是我得到的是一个空数组。不太确定如何为此构造正则表达式模式。任何指针将不胜感激。谢谢!

最佳答案

我看到的主要问题是正则表达式模式应该包括一个捕获组来选择所需的多个字符串。

func matchesForRegexInText(regex : String, text: String) -> [String] {
    var captured = [String]()
    let exp = try! NSRegularExpression(pattern: regex, options: [])
    let matches = exp.matchesInString(text, options:[], range: NSMakeRange(0, text.characters.count))

    for match in matches {
        let c = (text as NSString).substringWithRange(match.rangeAtIndex(1))
        captured.append(c)
    }

    return captured
}

let re = "\\n\\n([\\w\\\\s,']+)"; // selection with (...)

// ["Alpha", "Bravo", "Charlie"]
let strResults = matchesForRegexInText(re, text: "\n\nAlpha\n\nBravo\n\nCharlie\n\n")

关于ios - 在 Swift 中搜索以\n\n 开头的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39218805/

相关文章:

ios - 如何检查屏幕上是否显示 View ? (Swift 5 和 SwiftUI)

ios - 如果目标iPhone应用程序在App Store上不可用,如何测试Facebook SDK的apprequest?

php - 如何去除转推的开头?

ios - 将 slider 值设置为 TextView 中的当前阅读位置

swift - 在 Swift 3 中,如何修复有关参数标签与 String 类型的任何可用重载不匹配的错误?

swift - 在场景之间转换时保留循环问题

ios - Swift 无法将 NSString 转换为 JSON

ios - 以编程方式将 iPhone 联系人导出到 .vcf 文件

javascript - 正则表达式仅匹配javascript中字符串的时间值

java - 当我在 groovy 中使用正则表达式替换时,如何解决 java.lang.StackOverflowError 问题?