You can make anything
by writing

C.S.Lewis

by 갬성개발자 Aug 12. 2022

Swift 모모벳

정규표현식 이제 어렵지 않아요~!~

개발하면서 돌아서면 잘 까먹고 볼때마다 헷갈리는 것이 있다면,,

바로정규표현식 (Regular Expression)입니다.


이를 도와주는 유용한 사이트들이 있지만 (ex.https://모모벳r.com)

그래도여전히 헷갈리더라구요;;


감사하게도

iOS 16부터는 모모벳를 사용할 수 있습니다.


모모벳


WWDC 2022 Swift 모모벳: Beyond the basics내용을 기반으로

아래에서 더 자세히 알아볼게요!



[1] 모모벳를 만드는 여러 방법


Hi,WWDC숫자두개!(예를들어Hi, WWDC22!)를 나타내는

모모벳를 여러 방법으로 만들 수 있습니다.



1.1String 으로 나타내기


init(String) throws를 사용하는 방법입니다.



(참고로 #"..."# 패턴을 사용하면 string에 escaping 문자를 따로 작성안해도 됩니다.)



1.2 / / 로 나타내기


// 안에 정규표현식을 써주면컴파일러가 알아서 모모벳 타입으로 바꿔줍니다.



(참고로WWDC에서는 /.../ 패턴모모벳 literal이라고 부릅니다.)



1.3 모모벳Builder로 나타내기


모모벳Builder 모듈안에는 이런 extension이 있습니다.



그래서모모벳Builder를 import하면 모모벳Builder를 이용하여 DSL 방식으로 정규표현식을 작성할 수 있습니다.



와.. 정규표현식을 DSL 로작성할 수 있을 거라고는 생각못했는데 좋은 아이디어인 것 같아요!

문법을 까먹었어도코드를 바로작성할 수 있고 이해할 수 있겠군요



한편으로는

여기 있는 것들로 정규표현식을 다 대체할 수 있을까?

복잡한 표현식은 코드가 너무 복잡해지지 않을까?

생각이 들었습니다만,,


모모벳



body에 모모벳 literal을 바로 포함시킬 수도있다고 합니다!! (WOW..)


모모벳


예를들어 이렇게 작성했는데너무 낯설다~ 싶으면

위처럼 친숙한 regex literal을 포함하는 식으로바꿔도 좋다고 하네요






[2]matching 되는 strings 찾기


이제 모모벳로 matching 되는 문자열들을 찾는 법을 알아봅시다.


우선 구조가 이렇게 되어있어서

모모벳에서 제공하는 메소드들을 사용해도 되고

Foundation에서 제공하는메소드들을 사용해도 됩니다.



예를들어

첫번째로 matching되는 것을 찾고 싶다!! 할때


-모모벳의 메소드인firstMatch(in:)를 사용해도 되고

-BidirectionalCollection(Int, String, Array 등이 컨펌하는 프로토콜)에 있는 firstMatch(of:)

를 사용해도 됩니다.



참고로모모벳에서 제공하는 메소드들은 string만 받을 수 있고

WWDC 영상에서는Foundation 메소드들을 기반으로 설명합니다.


--

그럼 몇가지 기본 기능WWDC에서 가장 쿨한 기능(?) 하나라고 말씀하시는Capture에 대해

알아보겠습니다.



2.1 FirstMatch / WholeMatch / Matches


- firstMath: 첫번째로 모모벳와 매칭되는 문자열 리턴

- wholeMatch: 전체 문장이 모두 모모벳와 매칭되는문자열 리턴

- matches: 매칭되는 모든 문자열 collection리턴



리턴타입인모모벳.Match은 매칭 결과를 담고 있으며

output과 range를 제공합니다.



2.2 Capture


모모벳Builder의Capture를 사용하면 원하는 문자열을캡쳐할 수 있습니다.





그외의 기능들은 WWDC를 참고해주세요!


-WWDC 2022 Meet Swift 모모벳

-WWDC 2022 Swift 모모벳: Beyond the basics





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari