Swift で特定の文字列を抜き出したい
Swift5でHTMLから一部分を取り出したいと考えています。
自力で調べたところSwift2で書かれているものは幾つか見つけたのですが、Swift5ではわからなかったのでご教授願います。
いまいち正規表現(スミマセンよくわかっていません)で行う方法を見つけたのでそれでやりたいと思っています。
Xcode12.1
Swift5
該当のソースコード
Swift5
1//HOGEの部分を取り出したい。 2let str = "<br>HOGE</br>" 3 4let exp = ... //何かしらの処理 5print(exp) 6//exp の内容→ HOGE
最終的にやりたいこと
実際のプログラムでは"<br>HOGE</br>"の文言は幾つかあって、それを配列に全て入れたいと思っています。
Swift5
1let str = "<br>HOGE0</br> 文字 <br>HOGE1</br> 文字 <br>HOGE2</br>" 2 3let exp: [String] = ...//何かしらの処理 4print(exp) 5//exp の内容→ Hoge0, Hoge1, Hoge2
試したこと
Swift5
1let myHTMLString = "<br>HOGE0</br> 文字 <br>HOGE1</br> 文字 <br>HOGE2</br>" 2let pattern = "<br>(.+)<\/br>" 3 4 let regexp = try! NSRegularExpression(pattern: pattern, options: []) 5 let range = NSRange(location: 0, length: myHTMLString.count) 6 if let match = regexp.firstMatch(in: myHTMLString, options: [], range: range) { 7 let href = (myHTMLString as NSString).substring(with: match.range(at: 1)) 8 let text = (myHTMLString as NSString).substring(with: match.range(at: 2)) 9 print("\"(href)\" [(text)]") 10 } else { 11 print("not found") 12 }
上記のプログラムは某質問サイトからインスパイアされて自分で編集したものです。もともとSwift2で書かれていたのでSwift5に直しながら書いたつもりですがうまくいきませんでした。
発生したエラー
Swift5
1Thread 1: "-[NSSimpleRegularExpressionCheckingResult rangeAtIndex:]: index 2 out of range"
このプログラムでは"HOGE0"の部分しか取り出せないことは確認しています。
よろしくおねがいします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/11 01:34