我正在使用正则表达式在字符串中搜索“-”,然后将其替换为项目符号。
如果我的字符串是这样的:
- 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”。
如何对正则表达式应用多行支持?
答案 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)
-下一个字符必须为空格(但字符是超前字符,因此不会放入匹配项中)