정규표현식(Swift)
2023. 1. 29. 21:13ㆍSwift
반응형
정규표현식(Regular Expression)
- 문자열에서 원하는 부분, 혹은 패턴을 탐색하기위한 방법
- 프로그래밍 언어마다 다르지 않으며, 정규표현식 자체의 문법에 따른다.
정규표현식의 구성
메타문자(Meta Character)
- 메타문자는 문자의 본연의 의미를 가지기 보다는 하나의 문법이다.
- 정규문자가 반복되거나 포함되는 등등의 문법을 나타내기 위해 사용
.
,*
,+
,?
,^
,$
,{
,}
,|
,[
,]
,\
등이 메타문자에 포함된다.
정규문자(Regular Character)
- 문자 본연의 의미를 가지는 문자이다.
- 만약 메타문자 중에서 정규문자로 사용하고 싶은 문자가 있다면
\
(역슬래쉬)를 사용함으로 나타낼 수 있다.
정규표현식이 문자에 일치하는 지 확인
Apple Developer Documentation - NSString.CompareOptions
Apple Developer Documentation-String.range(of:options:)
let target = "HelloMyNameIsLeon"
let regularExpression = "^H" // 첫 글자가 "H"로 시작하는지
if target.range(of: regularExpression, options: .regularExpression) != nil {
print("정규식과 일치")
} else {
print("정규식과 불일치")
}
// print 정규식과 일치
range
의 정규식 옵션을 사용하여 해당 정규식을 사용하였을 때 불일치 한다면 반환값으로 nil이 나오므로 nil여부를 확인하여 일치하는지 확인할 수 있다.
정규표현식이 일치한 부분 확인
let target = "2532"
let regularExpression = "[0-9]*" // 숫자가 연속으로 포함되는지
if let targetIndex = target.range(of: regularExpression, options: .regularExpression) {
print(target[targetIndex])
} else {
print("정규식과 불일치")
}
// print 2532
- String의 range메소드는 옵셔널 타입으로 반환되므로 해당 옵셔널을 풀어준다면 subscript문법으로 해당 index의 내용을 확인할 수 있다.
정규식 활용법(핸드폰 번호)
let target = "01012341245"
let regularExpression = "^010[0-9]{8}$"
if let targetIndex = target.range(of: regularExpression, options: .regularExpression) {
print("정규식과 일치")
print("휴대폰번호 - \(target[targetIndex])")
} else {
print("정규식과 불일치")
}
// print 정규식과 일치
// print 01012341245
- 초기 시작은 “^010”으로 확인하며, [0-9]로 숫자인지를 확인한다
- {8}로 010이후 숫자들이 8개인지를 확인한다
$
는 문자열의 종료를 의미한다
let target = "010-1234-1245"
let regularExpression = "^010\\-([0-9]{4})\\-([0-9]{4})"
- “-“하이폰을 넣어주기 위해서
\\
를 사용하여 정규식에 포함시킨다 - 또한 괄호를 넣고 [0-9]를 통해 숫자와 {4}를 통해 4개만의 숫자를 쓸 수 있도록 만들었다.
let expression = "^010(-[0-9]{4}){2}"
- 위와 같이 -(하이폰)과 4개의 숫자가 2번 반복되는지 확인 할 수 있다
정규식 활용법(이메일)
let target = "leonFather17@naver.com"
let expression = "[A-Z0-9a-z]+@[A-Za-z0-9]+\\.[a-z]{2,3}$"
if let targetIndex = target.range(of: expression, options: .regularExpression) {
print("정규식과 일치 - \(target[targetIndex])")
} else {
print("정규식과 불일치")
}
// print 정규식과 일치 - leonFather17@naver.com
- 정규표현식은 소문자와 대문자를 따로 구별해줘야한다.
- [A-Z0-9a-z]는 소문자와 대문자 알파벳 및 숫자인지를 확인한다.
- @ 뒤에도 역시 소문자와 대문자 알파벳 숫자를 확인한다.
- 이후 .(dot) 뒤에 com, net이 들어가는지 확인하며 2자 이상 3자 이하인지를 확인한다.
반응형
'Swift' 카테고리의 다른 글
Swift 컴파일, 컴파일러 (0) | 2023.02.14 |
---|---|
ARC-간단정리 (0) | 2023.02.07 |
Closures 간단 정리 (2) | 2023.02.06 |
KVC(Key-value coding), KVO(Key-value observing) (0) | 2023.01.22 |
Opaque Types(불투명 타입) 간단하게 훑어보기 (0) | 2023.01.21 |