大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

SwiftUI沼でゆっくり浸る 正規表現で・・

著者:川上洋
公開日:2022/08/07
最終更新日:2022/08/07
カテゴリー:お知らせ 雑記
タグ:

こんにちは、川上です。

正規表現って、結構楽しいかも・・。
けったいな記号の様な文字の綴り続きの形で、期待の抽出ができたら、👍❗️です。
正規表現の書き方は、巷に彷徨えば、だいたい調べれるから、スルーしますw

先の

if getdatastr.pregMatche(pattern: ptnstr, matches: &ans)
は、正規表現で使ったStringのextension の関数を追加して使用したのでした。

の件の続きです。

Stringのextensionで、関数IFが安易に拡張できるのが、結構、便利ですwよね。

extension String {

    var count: Int {
        let string_NS = self as NSString
        return string_NS.length
    }

    func pregMatche(pattern: String
                   , options: NSRegularExpression.Options = []
                   , matches: inout [String]) -> Bool {
        guard let regex = try? NSRegularExpression(pattern: pattern, options: options) 
        else {
            return false
        }
        let targetStringRange = NSRange(location: 0, length: self.count)
        let results = regex.matches(in: self, options: [], range: targetStringRange)
        for i in 0 ..< results.count {
            for j in 0 ..< results[i].numberOfRanges {
                let range = results[i].range(at: j)
                matches.append((self as NSString).substring(with: range))
            }
        }
        return results.count > 0
    }
}

この術は、Editor用の既存アプリで検索窓等で概ねで使えます。
長い文章内で、多量で抽出や、置換をするようなことになったら、これで手抜きできないか、まず、考えちゃますw(ゼッタイ、ライトスタッフです)。

ではでは。。

    上に戻る