정규 표현식 규칙
- 숫자
- 숫자가 아닌 문자
- 문자(숫자, 글자 모두 포함)
- 한글
- 영어
- [A-Z] : 대문자
- [a-z] : 소문자
- [A-Za-z] : 대소문자 모두
- 문자매칭
-
- ? : 0 or 1개의 문자 매칭
- . : 1개의 문자 매칭
- 시작과 끝
- 공백
- \r\n : 줄바꿈
- \s : 공백(space)
- \t : tab
- \f : form feed
- 특수문자
- 특수기호
- swift에서는 특수기호 앞에 **\**가 붙어야한다
- \. == .
- \\ == \
- 조건문
정규표현식 예시
- [0-9]* : 숫자가 1개 이상
- 0, 01, 0123, 0000, 9876 둥
- ABC[0-9]{2} : ABC로 시작하고 뒤에 숫자가 2개
- [0-9]{3}[-][0-9]{4}[-][0-9]{4} : 전화번호 형식
- [\w][@][\w][.][\w]* : 이메일
- 19[0-9]{2}|20[0-9]{2} : 년도 체크
- 0[1-9]|1[0-9]|2[0-9]|3[0-1] : 일자
- 0(1~9) or 1(0~9) or 2(0~9) or 3(0~1)
Swift에서의 정규 표현식 사용법
1. Regex
Regex 응용
두가지 방법이 있다.
String.함수(of: Regex)와 방법과 Regex.함수(in: String/SubString) 이 있다.
firstMatch(of/in) - 컬렉션 내에서 지정된 정규식의 첫 번째 일치 항목을 반환
- Return Value
- 일치 항목이 있는 경우 : regex 컬렉션의 첫 번째 일치 항목 반환
- 일치 항목이 없는 경우 : nil 반환
prefixMatch(of/in) - 문자열의 시작이 지정된 정규식과 일치하는 경우 일치 항목을 반환
- Return Value
- 일치 항목이 있는 경우 : 일치 항목 반환
- 일치 항목이 없거거나 변환에서 regex 오류 발생시 : nil
wholeMatch(of/in) - 이 문자열이 처음에 지정된 정규식과 일치하는 경우 일치 항목을 반환
- Return Value
- 일치 항목이 있는 경우 : 일치 항목 반환
- 일치 항목이 없거나 변환에서 regex 오류 발생시 : nil
- 즉 wholeMatch는 결국 자기자신 or nil을 반환한다고 생각
matches(of:) - 지정된 정규식과 일치하는 모든 항목을 포함하는 컬렉션을 반환
- ReturnValue
- 지정된 정규식과 일치하는 모든 항목을 포함하는 Regex<Output>컬렉션
- 사용하려면 mapping 필요
var input = "00002023"
let regex = /19[0-9]{2}|20[0-9]{2}/
input.firstMatch(of: regex) // ["2023"]
try? regex.firstMatch(in: input) // ["2023"]
input.prefixMatch(of: regex) // nil
try? regex.prefixMatch(in: input) // nil
input = "20230000"
input.firstMatch(of: regex) // ["2023"]
try? regex.firstMatch(in: input) // ["2023"]
input.prefixMatch(of: regex) // ["2023"]
try? regex.prefixMatch(in: input) // ["2023"]
input.wholeMatch(of: regex) // nil
try regex.wholeMatch(in: input) // nil
input = "2023"
input.wholeMatch(of: regex) // ["2023"]
try regex.wholeMatch(in: input) // ["2023"]
input = "19972023"
input.matches(of: regex).map { $0.output } // ["1997", "2023"]
2. NSRegularExpression
var input = "19972023"
do {
let isNumber = try NSRegularExpression(
pattern: "19[0-9]{2}|20[0-9]{2}",
options: NSRegularExpression.options
) // options는 안써도 됨
} catch {}
참고
Regex | Apple Developer Documentation
Regex | Apple Developer Documentation
A regular expression.
developer.apple.com
[Swift] Regex, 정규표현식 사용하기
[Swift] Regex, 정규표현식 사용하기
Meet Swift Regex - WWDC22를 보고 추가로 궁금한 부분을 공부하여 정리해보았습니다. 💡 정규표현식이란? 사용자가 규칙을 세워 패턴을 정의해둔 String 정규 표현식은 패턴을 설명하는 간결한 방법으
borabong.tistory.com