在此字符串中:“测试(您好)123(您好)”
我要匹配:
TESTING
123
请帮助..谢谢!
我只能使用(\\\(.*?\))
来匹配\(hello)
和\(HOW ARE YOU)
,如何匹配此字符串的对应字符串?
答案 0 :(得分:1)
ICU(Swift中使用的正则表达式库)正则表达式无法匹配不等于某些多字符字符串的文本块。如果您想匹配某个特定字符以外的任何1个或多个字符,则可以这样做。如果您要“否定”整个字符的序列,则无法执行此操作。
您可以使用
let str = "TESTING \\(hello) 123 \\(HOW ARE YOU)"
let pattern = "\\s*\\\\\\([^()]*\\)\\s*"
let result = str.replacingOccurrences(of: pattern, with: "\0", options: .regularExpression)
print(result.components(separatedBy: "\0").filter({ $0 != ""}))
输出:["TESTING", "123"]
想法是匹配不需要的内容,并用空字符替换它们,然后用该空字符分割字符串。
模式详细信息
\s*
-超过0个空格\\\(
-一个\(
子字符串[^()]*
-除(
和)
之外的0+个字符\)
-一个)
字符\s*
-超过0个空格。结果可能包含空字符串,因此使用.filter({ $0 != ""})
来过滤掉它们。