Swift 3.0에서 기본 정규식을 수행하는 extension
편집 내역
2016년 12월 5일에 다음 수정
2017년 11월 12일에 다음 수정
소개
안녕하세요.
메소드가 점점 바뀌어 가거나,
Swift의 정규 표현은 서투르고 곤란해 버렸으므로,
문자열의 기본적인 조작인 「검색」과 「치환」을 실시하는 StringExtension를 써 보았습니다.
탐색 결과를 이용하는 부분을 PHP의 preg_match와 비슷하게 쓰고 싶었습니다만,
조금 다를 수 있습니다 ... 미안 해요.
이르지 못하는 점 등 많이 있다고 생각합니다만, 코멘트등 받을 수 있으면 다행입니다.
샘플
탐험
sample.swiftvar text = "Swwwwift"
if text.pregMatche(pattern: "Sw*ift") {
print("マッチしました")
} else {
print("マッチしていません")
}
검색 결과
sample.swiftvar text = "Swwwwift"
var ans: [String] = []
if text.pregMatche(pattern: "S(w+)ift", matches: &ans) {
print("マッチしました")
} else {
print("マッチしていません")
}
print(ans)
대체
sample.swiftvar text = "SwwwwiftLove"
let ans = text.pregReplace(pattern: "Sw*ift", with: "")
print(ans)
소스 코드
함수 이름 등 자유롭게 변경하십시오.
StringExt.swiftimport Foundation
extension String {
//絵文字など(2文字分)も含めた文字数を返します
var length: Int {
let string_NS = self as NSString
return string_NS.length
}
//正規表現の検索をします
func pregMatche(pattern: String, options: NSRegularExpression.Options = []) -> Bool {
guard let regex = try? NSRegularExpression(pattern: pattern, options: options) else {
return false
}
let matches = regex.matches(in: self, options: [], range: NSMakeRange(0, self.length))
return matches.count > 0
}
//正規表現の検索結果を利用できます
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.length)
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
}
//正規表現の置換をします
func pregReplace(pattern: String, with: String, options: NSRegularExpression.Options = []) -> String {
let regex = try! NSRegularExpression(pattern: pattern, options: options)
return regex.stringByReplacingMatches(in: self, options: [], range: NSMakeRange(0, self.length), withTemplate: with)
}
}
참고로 한 기사
Swift 정규식 정보
Swift (2.1)에서 똑같이 정규식을 만져 보았다 Qiita
Swift의 정규식 예제
Swift 정규식을 사용하여 지정한 <img src를 추출하고 싶습니다. teratail
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Swift 3.0에서 기본 정규식을 수행하는 extension), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KikurageChan/items/807e84e3fa68bb9c4de6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
탐험
sample.swift
var text = "Swwwwift"
if text.pregMatche(pattern: "Sw*ift") {
print("マッチしました")
} else {
print("マッチしていません")
}
검색 결과
sample.swift
var text = "Swwwwift"
var ans: [String] = []
if text.pregMatche(pattern: "S(w+)ift", matches: &ans) {
print("マッチしました")
} else {
print("マッチしていません")
}
print(ans)
대체
sample.swift
var text = "SwwwwiftLove"
let ans = text.pregReplace(pattern: "Sw*ift", with: "")
print(ans)
소스 코드
함수 이름 등 자유롭게 변경하십시오.
StringExt.swiftimport Foundation
extension String {
//絵文字など(2文字分)も含めた文字数を返します
var length: Int {
let string_NS = self as NSString
return string_NS.length
}
//正規表現の検索をします
func pregMatche(pattern: String, options: NSRegularExpression.Options = []) -> Bool {
guard let regex = try? NSRegularExpression(pattern: pattern, options: options) else {
return false
}
let matches = regex.matches(in: self, options: [], range: NSMakeRange(0, self.length))
return matches.count > 0
}
//正規表現の検索結果を利用できます
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.length)
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
}
//正規表現の置換をします
func pregReplace(pattern: String, with: String, options: NSRegularExpression.Options = []) -> String {
let regex = try! NSRegularExpression(pattern: pattern, options: options)
return regex.stringByReplacingMatches(in: self, options: [], range: NSMakeRange(0, self.length), withTemplate: with)
}
}
참고로 한 기사
Swift 정규식 정보
Swift (2.1)에서 똑같이 정규식을 만져 보았다 Qiita
Swift의 정규식 예제
Swift 정규식을 사용하여 지정한 <img src를 추출하고 싶습니다. teratail
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Swift 3.0에서 기본 정규식을 수행하는 extension), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KikurageChan/items/807e84e3fa68bb9c4de6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import Foundation
extension String {
//絵文字など(2文字分)も含めた文字数を返します
var length: Int {
let string_NS = self as NSString
return string_NS.length
}
//正規表現の検索をします
func pregMatche(pattern: String, options: NSRegularExpression.Options = []) -> Bool {
guard let regex = try? NSRegularExpression(pattern: pattern, options: options) else {
return false
}
let matches = regex.matches(in: self, options: [], range: NSMakeRange(0, self.length))
return matches.count > 0
}
//正規表現の検索結果を利用できます
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.length)
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
}
//正規表現の置換をします
func pregReplace(pattern: String, with: String, options: NSRegularExpression.Options = []) -> String {
let regex = try! NSRegularExpression(pattern: pattern, options: options)
return regex.stringByReplacingMatches(in: self, options: [], range: NSMakeRange(0, self.length), withTemplate: with)
}
}
Swift 정규식 정보
Swift (2.1)에서 똑같이 정규식을 만져 보았다 Qiita
Swift의 정규식 예제
Swift 정규식을 사용하여 지정한 <img src를 추출하고 싶습니다. teratail
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(Swift 3.0에서 기본 정규식을 수행하는 extension), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KikurageChan/items/807e84e3fa68bb9c4de6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)