正则表达式代雨燕[复制]

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安全。

以上是关于正则表达式代雨燕[复制]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式 ^(\d1,2)$ 是啥意思? [复制]

这个正则表达式如何找到素数? [复制]

jQuery:包含(正则表达式)? [复制]

为啥这个正则表达式模式不匹配? [复制]

这个 Python 正则表达式对于电子邮件地址是不是足够好? [复制]

正则表达式的四大操作(匹配,切割,替换,获取)