如何在多行上进行正则表达式搜索?

时间:2019-07-12 11:43:23

标签: swift regex

我正在使用正则表达式在字符串中搜索“-”,然后将其替换为项目符号。

如果我的字符串是这样的:

- Hello 1

有效。这是我得到的结果:

 . Hello 1

但是,当我的字符串是这样的时候:

- Hello 1 - Hello 2  
- Hello 3

它不起作用。这就是我得到的:

. Hello 1 - Hello 2
- Hello 3

这是我想要的结果:

. Hello 1 - Hello 2
. Hello 2

这是我正在使用的功能:

    func applyBulletPointsFormat() {
        let matches = RegexPattern.bulletPointRegex.matches(mutableString as String)
        matches.reversed().forEach { formattedString in
            let newRange = NSRange(location: 0, length: 1)
            replaceCharacters(in: newRange , with: "\u{2022} ")
        }
    }

这是我的正则表达式=>“ ^ \-\ s(。*)”

这是我在www.regexr.com =>“ /^-\s(.*)/gm”上创建的正确正则表达式。我不知道如何应用“ / gm”。

如何对正则表达式应用多行支持?

1 个答案:

答案 0 :(得分:1)

您可以使用

let s = "- Hello 1 - Hello 2\n- Hello 3"
let result = s.replacingOccurrences(of: "(?m)^-(?=\\s)", with: "\u{2022}", options: .regularExpression)
print( result )

输出:

• Hello 1 - Hello 2
• Hello 3

详细信息

  • (?m)-启用多行模式
  • ^-一行的开头
  • --连字符
  • (?=\s)-下一个字符必须为空格(但字符是超前字符,因此不会放入匹配项中)