새소식

인기 검색어

iOS/Swift

[Swift] 정규표현식

  • -

정규 표현식 규칙

  • 숫자
    • [0-9]
    • \d
  • 숫자가 아닌 문자
    • \D
  • 문자(숫자, 글자 모두 포함)
    • \w
  • 한글
    • [가-힣] : 한글 모두
  • 영어
    • [A-Z] : 대문자
    • [a-z] : 소문자
    • [A-Za-z] : 대소문자 모두
  • 문자매칭
      • : 앞의 문자가 0번 이상 반복
      • : 앞의 문자가 1번 이상 반복
    • ? : 0 or 1개의 문자 매칭
    • . : 1개의 문자 매칭
  • 시작과 끝
    • ^* : *로 시작
    • *$ : *로 끝난다
  • 공백
    • \r\n : 줄바꿈
    • \s : 공백(space)
    • \t : tab
    • \f : form feed
  • 특수문자
    • [!@#$%^&*()-=+] = 특수문자
  • 특수기호
    • swift에서는 특수기호 앞에 **\**가 붙어야한다
    • \. == .
    • \\ == \
  • 조건문
    • | : or

정규표현식 예시

  • [0-9]* : 숫자가 1개 이상
    • 0, 01, 0123, 0000, 9876 둥
  • ABC[0-9]{2} : ABC로 시작하고 뒤에 숫자가 2개
    • ABC00, ABC11, ABC22 등
  • [0-9]{3}[-][0-9]{4}[-][0-9]{4} : 전화번호 형식
    • 010-1234-5678 등
  • [\w][@][\w][.][\w]* : 이메일
  • 19[0-9]{2}|20[0-9]{2} : 년도 체크
    • 19XX or 20XX
  • 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

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.