正则表达式代雨燕[复制]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式代雨燕[复制]相关的知识,希望对你有一定的参考价值。
这个问题已经在这里有一个答案:
我有开始和以“_H”结尾的句子。我想产生一个正则表达式可以赶上这种情况下多次出现在一个完整的字符串。
我已经产生了正则表达式看起来像这样 “_H [A-ZA-Z0-9] ._ H”。我想添加一个“全局标志”像在javascript,但没能找到任何解决它。
Input String: "_h Hello _h _h World _h"
Current output: Hello World
Expected output: [Hello, World]
答案
你可以这样做:
let str = "_h Hello _h _h World _h"
let range = NSRange(str.startIndex..., in: str)
let regex = try! NSRegularExpression(pattern: "(?<=_h).+?(?=_h)")
let matches = regex.matches(in: str, range: range)
let results: [String] = matches.compactMap match in
let subStr = String(str[Range(match.range, in: str)!]).trimmingCharacters(in: .whitespacesAndNewlines)
return subStr.isEmpty ? nil : subStr
print(results) //["Hello", "World"]
这里是正则解释说:
(?<=_h)
:用于_h
正回顾后字面上(区分大小写);.+?
:匹配任何字符(除了行终止),1和无限次之间,如几次尽可能,扩大视需要;(?=_h)
:对于_h
正向前查找字面上(区分大小写)。
N.B:强制展开建造时是subStr
安全。
以上是关于正则表达式代雨燕[复制]的主要内容,如果未能解决你的问题,请参考以下文章