前提
正規表現で特定の数字を取得するコードを書いています。
実現したいこと
Swiftの正規表現で ?max_id=
以降 + &
までの 数字
を取得したいです。
発生している問題・エラーメッセージ
取得できません
該当のソースコード
Swift
1import Foundation 2 3print("-------") 4print("nextResultsは") 5print(nextResults) 6print("-------") 7 8 // nextResults 9let res = nextResults.match(#"max_id(([0-9]+):\d+)&"#) 10print(res) 11 12// オーバーライド:正規表現 13extension String { 14 func match(_ pattern: String) -> [String] { 15 let range = NSRange(location: 0, length: self.count) 16 guard let regex = try? NSRegularExpression(pattern: pattern), 17 let matched = regex.firstMatch(in: self, range: range) 18 else { return [] } 19 return (0 ..< matched.numberOfRanges).compactMap { i in 20 let r = matched.range(at: i) 21 if r.location == NSNotFound { return nil } 22 return NSString(string: self).substring(with: r) 23 } 24 } 25} 26
------- nextResultsは ?max_id=1609520488455499776&q=%23%E4%B8%83%E5%91%B3%E5%94%90%E8%BE%9B%E5%AD%90&include_entities=1 ------- []
試したこと
⚫︎Swift3で特定の文字列の中から数字を抽出する方法
https://qiita.com/kakky0418/items/67d60143b8babc7cbbef
最近の試した記事
⚫︎Swift: 正規表現を使って文字列を抜き出す(グループ化対応)
https://zenn.dev/kyome/articles/1a55547614dd495a869d
正規表現関連の記事を見て一通り試してみました。
数字のみの抽出の記事がなく、含有の判定のみでした。
含有判定ではなく、正規表現で抽出したいです。
詳しい方いましたらお手柔らかにお願いいたします。
コードに正規表現での抽出部分が全くないのですが、コピペミスでしょうか?
質問は編集できます。
ご指摘ありがとうございます。
追記いたしました。
色々試している状態で該当コードを追記していませんでした。
ご確認よろしくお願いいたします。
解決しているようなので蛇足とはなりますがオリジナルのURLが存在しているのならstruct URLのqueryItems プロパティを調べてください。 正規表現など使わずに簡単にご希望の値が取得可能です。
https://developer.apple.com/documentation/foundation/urlcomponents/1779966-queryitems
回答1件