(init) 2021. 7. 29. 12:25
(update 2023. 04. 18 00:50
- 정규표현식 완성.
정규표현식을 완성했습니다.
이 포스팅을 또 다시 작성할 줄은 몰랐습니다.
포스팅을 작성하게 된 이유는 구글링을 통해 찾은 코드에서 크래시가 발생했기 때문입니다.
아래는 html태그를 해 작성했던 코드이지만
<b>아주 폭신한 아기 고양이</b> <b>파피용 고양이 병원에 가다</b> 글, 그림 A.N. 강 옮김 김애나 솜털처럼 날아다니는 <b>고양이</b> <b>파피용</b>이 기분이 안 좋았어요 무슨 일이 생긴게 틀림 없어요! 한 밤 중 <b>병원</b>으로 가서 하룻밤...
위의 케이스를 제거하지 못하고 일부 경우에는 크래시가 발생합니다.
❌ 아래 코드는 사용하지 말기
extension String {
/// String에서 html 태그를 모두 제거합니다.
public var removeHTMLTag: String {
guard let encodedData = self.data(using: .utf8) else {
return self
}
let options: [NSAttributedString.DocumentReadingOptionKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.characterEncoding: String.Encoding.utf8.rawValue
]
do {
let attributed = try NSAttributedString(data: encodedData,
options: options,
documentAttributes: nil)
return attributed.string
} catch {
return self
}
}
}
그렇다면 어떻게해야할까요?
✅ 아래 코드는 사용하지 말기
extension String {
var escapingHTML: String {
let patten = "<[^>]+>|"|<b>|</b>" // 필요한 패턴을 |(or기호)와 함꼐 추가하기
return self.replacingOccurrences(of: patten,
with: "",
options: .regularExpression,
range: nil)
}
}
위의 방법대로 수행하면 올바르게 처리할 수 있습니다.
과거 포스팅
✅ 이번시간에는 정규표현식을 이용하여 html 태그를 지우는 방법에 대해서 알아보자.
네이버 검색 API를 통해 데이터를 받아왔는데, 받고 보니까 html 태그가 섞여 있어서 도저히 그냥 쓸 수가 없었다...
그래서 나는 HTML태그를 지워야 했는데, 어떻게 적용시켰는지 한번 볼까?
(목차)
1. 정규표현식을 이용해 html 태그를 지우는 코드
2. 정규표현식을 확인하는 사이트를 통해 알아보자
3. 예시코드
✅ 1. 정규표현식을 이용해 html 태그를 지우는 코드
.replacingOccurrences(of: "<[^>]+>|"",
with: "",
options: .regularExpression,
range: nil)
앞에 "<[^>]+>" 이 부분이 html 태그를 지우는 부분이고 " 이 부분이 정규표현식을 통해 걸러지지 않는 부분을 또 한번 걸러낸 코드이다.
✅ 2. 정규표현식을 확인하는 사이트를 통해 알아보자
여기 사이트에 들어가서 내가 만든 정규 표현식이 잘 적용되는지 확인할 수 있다.
우리가 작성한 정규표현식이 정상적으로 적용되는 것을 확인할 수 있다.
✅ 3. 예시코드
내 블로그의 최고 장점은 무조건 예시코드를 두어서 사용자가 복붙해서 바로 확인해볼 수 있는 것이니까 그럼 예시코드를 한번 만들어 볼까?
let htmlString = """
<p>p</p>
<h1>h-1<\h1>
"
"""
htmlString.replacingOccurrences(of: "<[^>]+>|"",
with: "",
options: .regularExpression,
range: nil)
// 결과값
ph-1
정규표현식은 파이썬으로 코딩테스트를 준비할 때 급급하게 사용했던 것인데, 문자열을 대하겠다면 깊게 공부해보는 것이 중요하겠다.
html 정규 표현식 : /<[^>]*>?/g
'deprecated > 코로나 알림(project-ios)' 카테고리의 다른 글
[iOS14] Swift5 alertDialog 함수로 만들어 사용하기 (0) | 2021.08.04 |
---|---|
[iOS14] ♋️ SplashView를 활용해 Alert 발생하기 (0) | 2021.08.02 |
[iOS14] 백그라운드에서 특정 시간 로컬 알림보내기 (0) | 2021.07.29 |
Swift5 네이버 검색 API 사용하기(뉴스) (0) | 2021.07.26 |
Swift XML Parsing (OpenAPI) (0) | 2021.07.21 |