🍎 Apple/Swift
[Swift] 정규표현식, 편리하게 쓰세요. (ft. name capture)
PushedGun
2023. 10. 28. 01:01
1. 정규표현식
func isOutOfRangePassword(passwordText: String) -> Bool {
let rangeRegex = /^password:.{8,16}$/
if passwordText.prefixMatch(of: rangeRegex) == nil { return true }
return false
}
정규표현식을 사용하여 받은 문자열의 패턴을 파악하는 것은 흔히 사용되는 방법이다.
그런데 패턴 뿐만 아닌, 원하는 패턴의 문자열을 정규표현식을 사용하여 추출하는 것도 가능하다.
바로 예제를 보자.
2. name capture
func isOutOfRangePassword(passwordText: String) -> Bool {
let rangeRegex = /^password:(?<string>.{8,16})$/
guard let result = passwordText.prefixMatch(of: rangeRegex) else { return true }
print(result.string) //"password:"을 제외한 문자열이 찍힌다.
result false
}
이렇게 추출하고 싶은 패턴 부위에다 (?<원하는 변수명>)을 지정해주면, 원하는 패턴 부위를 편하게 추출할 수 있다.
+ prefixMatch?
여기서 사용된 PrefixMatch 에 대한 부가설명이다.
해당 문자열 안에 원하는 패턴이 들어있기만 하면 패턴을 인식할 수 있다.
그런데, 이를 원하지 않을 경우 정규 표현식 앞 뒤로 ^(처음)와 $(끝)을 붙이는 방법과 완벽히 일치하지 않으면 패턴을 찾아내지 못하는 wholeMatch를 사용하면 엄격한 검사가 가능하다.