티스토리 뷰
안녕하세요 :) Zedd입니다.
오늘은.. NSRegular
?저번에 Options뭐 글 쓰지 않았나효,,
그건 String의 compareOptions!!!! 보실 분들은 <NSString.CompareOptions종류>글을 참고해주세요.
이번거는 이름에서 볼 수 있듯이...NSRegularExpression.Options .NSRegularExpression에서 사용하는 옵션입니다.
let regex = try NSRegularExpression(pattern: regex, options: [])
바로 저기 bold체 해놓은 곳에 들어가는 옵션이죠.
옵션들에는 이정도가 있습니다.
하나씩 보죠.
NSRegularExpression.Options
● case
<NSString.CompareOptions종류>글과 완벽히 같습니다.
설명은 안할게용
● allow
정의는 Ignore whitespace and #-prefixed comments in the pattern.
패턴에 공백과 #가 붙은 주석을 무시하십시오.
인데요...
ㅠㅠㅠ..이게 언제 되는지 도대체 뭐라해야되지 아 이때 ㄱ딱 되네!! 이걸 모르겠습니다.
myLabel.text = "hello, zedd. Zedd hava a zeddyzedd!"
let regex = try NSRegularExpression(pattern: "zedd", options: [.allowCommentsAndWhitespace])
자..패턴으로 zedd를 주고, (엥 저거 정규식 아니잖아;;라고 하실 수도 있는데..! 이렇게 검사도 됩니다. 저런식으로 패턴에 string을 넘겨주면, 해당 string을 체크해요!)
그럼 이렇게 되죠. 현재 옵션을 allowCommentsAndWhitespace로 준상태지만, 저 옵션을 주지 않아도 위 결과가 나오게 됩니다.
그럼 allowCommentsAndWhitespace는 뭐냐;;;
저는 Ignore whitespace and #-prefixed comments in the pattern.이걸 보고,
아 #zedd는 zedd로 인식하나보지?
여러분 지금부터 allowCommentsAndWhitespace에 대한 여러가지 실험 결과를 쓸건데,
헷갈릴 수도 있으니(지금 제가 헷갈림;;;) 주의해서 봐주세요.
Case 1 : 패턴에 prefix로 #이 있을 경우
1-1 : 옵션에 allowCommentsAndWhitespace가 없을 경우.
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern: "#zedd", options: [])
이 결과는 당연하죠?
1 -2 : 옵션에 allowCommentsAndWhitespace가 있을 경우.
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern: "#zedd", options: [])
#zedd마저 활성화가 안된다. 여기서 내 의문.
정의는 분명히 패턴에 #prefix를 무시한다고 했는데, 그럼 zedd로 패턴이 들어가는거나 마찬가지 아닌가? -> 왜 다른 zedd들은 파란색으로 바뀌지 않은것인가?
(여러분 근데 제가 정의를 잘못이해하고 있을 수도 있습니다..혹시나 아시는 분은 댓글로 알려주시면 정말 감사하겠습니다.)
Case 2 : 패턴에 WhiteSpace가 있는 경우.
2-1 : 옵션에 allowCommentsAndWhitespace가 없을 경우.
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern: "z edd", options: [])
2- 2 : 옵션에 allowCommentsAndWhitespace가 있는 경우.
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern: "z edd", options: [.allowCommentsAndWhitespace])
그러면 이제 정의대로 잘 동작한거죠. #prefix때와는 다르게 말이에요...지금 패턴이 "z edd"잖아요? 나는 이게 "z edd"든 뭐든 안에 whiteSpace를 무시하고 인식하겠다 이거잖아요. 그래서 지금 결과가 zedd는 모두 파란색이 됐죠.
하지만 #Prefix때는 아무것도 파란색으로 변하지 않으니까...그게 헷갈립니다...
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern:"z e d d ", options: [.allowCommentsAndWhitespace])
만약 패턴이 저렇게 극단적으로 whiteSpace가 많아도
이렇게 whiteSpace를 무시하고, zedd를 잘 인식합니다.
Case2에 대해 한가지 더 추가하자면, #과 whiteSpace가 패턴에 존재하고, allowCommentsAndWhitespace가 추가된 경우.
아무것도 바뀌지 않습니다..
Case 3 : 패턴 중간에 #이 있는경우
myLabel.text = "hello, #zedd. Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern:"z e# d d ", options: [.allowCommentsAndWhitespace])
3-1 : 옵션에 allowCommentsAndWhitespace가 없을 경우.
3-2 : 옵션에 allowCommentsAndWhitespace가 없을 경우.
ㅠㅠㅠ..뭐지......이거 솔직히 헷갈릴만 하다...아니 찾아도 뭔 예제도 없고..그래서...혼자 여러가지 실험해봤는데..이거 말고 진짜 정규식 /^~~$ <- 이런거에서는 잘 동작하는건가? 내가 원래 text가 이상한것인가?!??!?!
아무튼...아는분은 알려주시면 감사하겠습니다...
● ignore
Treat the entire pattern as a literal string.
전체 패턴을 리터럴 문자열로 취급합니다.
- ignoreMetacharacters옵션이 없는 경우.
myLabel.text = "hello, #zedd. ()Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern:"()", options: [])
- ignoreMetacharacters옵션이 있는 경우.
myLabel.text = "hello, #zedd. ()Zedd hava a zeddyzedd z edd!"
let regex = try NSRegularExpression(pattern:"()", options: [.ignoreMetacharacters])
Allow .
to match any character, including line separators.
. 행 구분 기호를 포함하여 모든 문자와 일치시킵니다..?
myLabel.text = "hello, #zedd. ()Zedd hava a zeddy zedd\nzedd!"
let regex = try NSRegularExpression(pattern:"zedd.zedd", options: [])
myLabel.text = "hello, #zedd. ()Zedd hava a zeddy zedd\nzedd!"
let regex = try NSRegularExpression(pattern:"zedd.zedd", options: [.dotMatchesLineSeparators])
● anchors Match Lines
^
and $
to match the start and end of lines.myLabel.text = "hello, \nzedd. ()Zedd hava a zeddy zedd\nzedd!"
let regex = try NSRegularExpression(pattern:"^zedd", options: [])
myLabel.text = "hello, \nzedd. ()Zedd hava a zeddy zedd\nzedd!"
let regex = try NSRegularExpression(pattern:"^zedd", options: [.anchorsMatchLines])
● use Unix Line Separators
\n
as a line separator (otherwise, all standard line separators are used).줄 구분 기호로 \ n 만 처리하십시오 (그렇지 않으면 모든 표준 줄 구분 기호가 사용됩니다).
이거 별짓을 다해봤늗네..잘 모르겠어요..ㅠㅠㅠ하
● use Unicode Word Boundaries
'iOS' 카테고리의 다른 글
iOS ) 일치하는 모든 문자열의 Attribute를 바꾸고 싶을 때 (정규식 이용하기) (0) | 2018.04.15 |
---|---|
iOS ) 한글 분해와 조사 판별 (6) | 2018.04.06 |
iOS ) translatesAutoresizingMaskIntoConstraints (11) | 2018.03.30 |
iOS ) 일치하는 모든 문자열의 Attribute를 바꾸고 싶을 때 (2) | 2018.03.22 |
iOS ) Accessibility(접근성) - Accessibility Programming Guide for iOS (3) (0) | 2018.03.18 |
- 스위프트 문법
- WWDC
- ios 13
- FLUTTER
- np-hard
- WKWebView
- SwiftUI
- Git
- swift 공부
- swift sort
- swift tutorial
- 스위프트
- swift array
- github
- IOS
- swift3
- UIBezierPath
- swift delegate
- Combine
- np-complete
- WidgetKit
- Accessibility
- actor
- fastlane
- 피아노
- iOS delegate
- Xcode
- 회고
- 제이슨 파싱
- Swift
- Total
- Today
- Yesterday