#対象
swiftの正規表現は面倒くさい!
でも、ライブラリを導入するのも面倒くさい!
コードは汚くてもいいからとにかく動くやつを!
そんな物臭な方。
#環境
-Xcode 7.01
-Swift
#使い方と出力例
//Stringの拡張クラスとして提供
//Matchメソッド
// 出力は["一致パターン全文","グループ1","2"...]
"http://goowa.jp".Match("([a-zA-Z0-9]*)://(.*)")
// -> ["http://goowa.jp","http","goowa.jp"]
//Matchesメソッド
// 出力は["一つ目の一致パターン全文","グループ1","2"...]
// ["二つ目の一致パターン全文","グループ1","2"...]
"むかしむかしあるところに".Matches("むかし")
// -> [["むかし"]["むかし"]]
#コード
StringEX.swift
/**
正規表現で検索を行う
- parameter pattern:検索パターン
- returns: [String]で検索結果を返す.
*/
func Match(pattern:String) -> [String]
{
let nsstr = self as NSString
var returns:[String] = []
if let regex = try? NSRegularExpression(pattern:pattern, options:NSRegularExpressionOptions())
{
if let result = regex.firstMatchInString(nsstr as String, options: NSMatchingOptions(), range: NSMakeRange(0, nsstr.length))
{
for var i : Int = 0; i < result.numberOfRanges; ++i
{
returns.append(nsstr.substringWithRange(result.rangeAtIndex(i)))
}
}
}
return returns
}
/**
正規表現で検索を行う
- parameter pattern:検索パターン
- returns:[[String]]で検索結果を返す
*/
func Matches(pattern:String) -> [[String]]
{
let nsstr = self as NSString
var returns:[[String]] = []
if let regex = try? NSRegularExpression(pattern:pattern,options:NSRegularExpressionOptions()){
let result = regex.matchesInString(nsstr as String, options: NSMatchingOptions(), range: NSMakeRange(0, nsstr.length))
for var i = 0; i < result.count; ++i
{
var temp : [String] = []
for var j = 0; j < result[i].numberOfRanges; j++
{
temp.append(nsstr.substringWithRange(result[i].rangeAtIndex(j)))
}
returns.append(temp)
}
}
return returns
}