- Published on
π Swift - Regex.01
- Authors
- Name
- μ΄μ°½μ€
μ κ·ννμ μ°Έ μ μ¦μ κ°λ μΈ κ² κ°μ΅λλ€. μ λ μ λͺ°λΌμ λͺ»μ°λλ°, μ μ°λ μ¬λλ€μ 20μ€~30μ€μ΄ νμν μ½λλ₯Ό λ¨ ν μ€λ‘ μ²λ¦¬ν΄λ²λ¦¬κ±°λ μ.
κ·Έλμ λ―Έλ£¨κ³ λ―Έλ£¨λ€ λλμ΄ μ λ μ΄κ² λμ§λ ν λ² λ³΄μλ μμΌλ‘ 곡λΆν΄λ³΄κΈ°λ‘ νμ΅λλ€.
μ κ·ννμ (Regular Expression)
νν "Regex" λΌκ³ λ§μ΄λ€ μ€μ¬μ λΆλ₯΄λλ°μ..
Regular Expressionμ μ€μλ§μ λλ€.
μ κ·ννμμ΄λ μ΄λ€ λ¬Έμλ₯Ό μ²λ¦¬νκΈ° μν κ·μΉλ€μ μ ν΄λ λ¬Έλ²μ λλ€. ex) λ¬Έμμ΄μ μ«μκ° μλμ§, λ¬Έμμ΄μ "s"λ‘ μμνλ λ¨μ΄κ° μλμ§
λ¬Έμμ΄μ μ΄λ€ ν¨ν΄μ λ¬»κ³ , κ·Έ ν¨ν΄μ μΆ©μ‘±νλμ§?μ λν λ΅λ³μ μ»μ μ μλ κ²μ΄μ£ .
μ£Όμ΄μ§ λ¬Έμμ΄ μ°ΎκΈ°
κ°μ₯ μ¬μ΄ μμ λΆν° μμν΄λ΄ μλ€.
μλ¬΄λ° κΈ°νΈ μμ΄ μ¬μ©νμ κ²½μ°, μ νν μ£Όμ΄μ§ λ¬Έμκ° ν¬ν¨λμ΄ μλ μ§λ₯Ό νμΈν μ μμ΅λλ€.
Source:
Hello, world!
λμλ¬Έμ ꡬλΆ
Hello
matches: Hello, world!
hello
matches: Hello, world!
μ κ·μμ λμλ¬Έμ ꡬλΆμ ν©λλ€. κ·Έλμ "hello"μ "Hello"λ λ€λ₯Έ λ¬Έμλ‘ νλ¨λλ κ²μ΄μ£ .
whitespace ꡬλΆ
Hello, world
matches: Hello, world!
Hello,
Β Β Β world
matches: Hello, world!
μ κ·μμ whitespace(λΉ κ³΅κ°)λ ꡬλΆμ ν©λλ€. κ·Έλμ "Hello, world"μ "Hello, world"λ λ€λ₯Έ λ¬ΈμμΈ κ²μ΄μ£ .
λ¬Έμμ΄μ μμΉ μ°ΎκΈ°
μ°Ύκ³ μ νλ λ¬Έμμ΄μ μμΉλ₯Ό μ μ½ν΄μ μ°ΎμλΌ μλ μμ΅λλ€.
Source:
who is who
^
, $
^who
matches: who is who
^
μ μμλλ λΆλΆμ΄ μ‘°κ±΄μΌ λ μΆ©μ‘±ν©λλ€.
who$
matches: who is who
λ°λλ‘ $
λ λλλ λΆλΆμ΄ μ‘°κ±΄μΌ λ μΆ©μ‘±ν©λλ€.
Notes:
λ¬Έμμ΄μ 쑰건 κΈ°νΈκ° ν¬ν¨λ λλ μ΄λ»κ² ν κΉμ? ($440κ³Ό κ°μ΄)
κ·Έλ΄ λλ
\
λ₯Ό μ¬μ©ν©λλ€.\
λ\
λ€μ μλ λ¬Έμλ₯Ό κΈ°νΈκ° μλ λ¬Έμμ΄μ΄λΌλ κ²μ μλ―Έν©λλ€. (\$
)
λ¬Έμμ μ 무 νλ¨νκΈ°
Source:
Regular expressions are powerful!!!
.
.
first match: Regular expressions are powerful!!!
matches: Regular expressions are powerful!!!
.
μ μ΄λ€ λ¬Έμλ μ‘΄μ¬νλ©΄ μΆ©μ‘±νλ μΌμ’
μ μμΌλμΉ΄λ μ
λλ€.
......
first match: Regular expressions are powerful!!!
matches: Regular expressions are powerful!!!
μ¬λ¬ κ°λ₯Ό μ¬μ©ν΄μ μνλ λ¬Έμμ κ°μλ₯Ό 쑰건μΌλ‘ μ€ μ μμ΅λλ€.
matchesμμ 맨 λμ "ul!!!"μ΄ μ νλμ§ λͺ»ν κ²μ μμμλΆν° 6κ°μ©μ λ¬Έμλ₯Ό μ°Ύμ λ, 맨 λ€μ 5κ° λ¬Έμκ° λ¨κΈ° λλ¬Έμ λλ€.
μνλ νΉμ λ¬Έμλ€ μ€μμ μ°Ύμλ΄κΈ°
λͺ¨λ λ¬Έμ λ§κ³ , λ΄κ° μνλ νΉμ λ¬Έμκ° μλ€λ©΄ μ΄λ»κ² ν κΉμ?
[]
Source:
How do you do?
[oyu]
first match: How do you do?
matches: How do you do?
λκ΄νΈμ λ΄κ° μνλ λ¬Έμμ μ’ λ₯λ₯Ό λ£μ΄μ€μΌλ‘μ¨ νΉμ λ¬Έμλ€λ§ μ°ΎμλΌ μ μμ΅λλ€.
[dH].
first match: How do you do?
matches: How do you do?
μ΄ λ μ£Όμν μ μ, []
μμ μ’
λ₯κ° μΌλ§λ λ§λμ§ λ¬Έμ **"νλ"**λ₯Ό μλ―Ένλ€λ μ μ
λλ€.
κ·Έλμ μμμ [dH].
λ dνΉμ Hκ° ν¬ν¨λ νκΈμμ κ·Έ λ€μ λ°λΌλΆλ μ무 λ¬Έμ νκΈμλ₯Ό μ°Ύμλ΄λ μ κ·μμΈκ±°μ£ .
[-]
Source:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
κ·Έλ°λ° 쑰건μΌλ‘ λ£μ λ¬Έμκ° λ~무 λ§μ λλ μ΄λ»κ² νλ©΄ λ κΉμ?
[CDEFGHIJK]
μ²λΌ μΌμΌν λ£μ΄μ€λ λμ§λ§, -
λ₯Ό μ¬μ©ν΄ λ²μλ₯Ό ννν μλ μμ΅λλ€.
[C-K]
first match: ABCDEFGHIJKLMNOPQRSTUVWXYZ
matches: ABCDEFGHIJKLMNOPQRSTUVWXYZ
[C-Ka-d2-6]
Source:
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 123456789
first match: ABCDEFGHJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 123456789
matches: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 123456789
[^]
μΉμν ^
κ° μλ€μ. κ·ΈλΌ [^]
λ μ£Όμ΄μ§ λ²μμ λ¬Έμλ€ μ€ νλλ‘ μμλλ 쑰건μΌκΉμ?
μμ½κ²λ μλλλ€. ^
κ° λκ΄νΈ μμ μμ λλ, NOTμ μλ―Έλ‘ μ¬μ©λ©λλ€.
Source:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[^CD]
firstm match: ABCDEFGHIJKLMNOPQRSTUVWXYZ
matches: ABCDEFGHIJKLMNOPQRSTUVWXYZ
^
λ‘ ννλ "CD"λ§ μ νμμ μ μΈλ κ²μ λ³Ό μ μμ£ ?
μλΈν¨ν΄
λμμ μ¬λ¬κ°μ 쑰건μ μ£Όκ³ μΆμ λλ μ΄λ»κ² ν κΉμ?
|
λ₯Ό μ¬μ©ν΄μ£Όλ©΄ λ©λλ€!
Source:
Monday Tuesday Friday
|
(on|ues|rida)
first match: Monday Tuesday Friday
matches: Monday Tuesday Friday
μ΄λ κ² μ¬λ¬κ°μ 쑰건λ€μ ν λ²μ μ€ μ μμ΅λλ€. λμ κ΄νΈλ‘ λ¬Άμ΄μ£Όμ΄μΌ νλ€λ μ μ κΈ°μ΅ν΄λ¬μΌκ² λ€μ!
(Mon|Tues|Fri)day
matches: Monday Tuesday Friday
λ°μν μ μλ λ¬Έμμ νμ μ ν΄μ£ΌκΈ°
μ£Όμ΄μ§ λ¬Έμκ° λͺ λ² λ±μ₯ν μ μλμ§λ₯Ό μ ν μλ μμ΅λλ€.
λ¬Έμκ° μ΅μ 3λ²μμ μ΅λ 6λ²κΉμ§ λ±μ₯ν λ¬Έμλ₯Ό μ°Ύμμ€! μ κ°μ κ²½μ°μ μ¬μ©ν μ μκ² μ£ ?
*
, +
, ?
Source:
aabc abc bc
a*b
first match: aabc abc bc
matches: aabc abc bc
*
λ μμ λ¬Έμκ° 0ν νΉμ μ¬λ¬κ°κ° μ¬ μ μμμ μλ―Έν©λλ€.
κ·Έλμ μμλ aκ° μμΌλ©΄ λͺ¨λ aλ€μ ν¬ν¨νκ³ , κ·Έ λ€μ bκ° νλ μμΌνλ 쑰건μ΄κ² μ£ ?
a+b
first match: aabc abc bc
matches: aabc abc bc
+
λ μμ λ¬Έμκ° 1ν νΉμ μ¬λ¬κ°κ° μ¬ μ μμμ μλ―Έν©λλ€. *
μ λ€λ₯Έ μ μ μ΅μ ν λ²μ μμ΄μΌ νλ€λ κ²μ΄μ£ !
κ·Έλμ μμμ "bc"λ 쑰건μμ μ μΈλμ΄ μλ€λ κ²μ μ μ μλ€μ.
a?b
first match: aabc abc bc
matches: aabc abc bc
?
λ μμ λ¬Έμκ° 0ν νΉμ ν λ² μ¬ μ μμμ μλ―Έν©λλ€.
[-@]*
Source:
-@- *** -- "*" -- *** -@-
first match: -@- *** -- "*" -- *** -@-
matches: -@- *** -- "*" -- *** -@-
λκ΄νΈ μμ μλ - νΉμ @λ€μ μ°Ύμλ΄λ μ κ·μμ΄κ² μ£ !?
[^ ]+
Source:
-@@@- * ** - - "*" -- * ** -@@@-
first match: -@@@ * ** - - "*" -- * ** -@@@-
matches: -@@@ * ** - - "*" -- * ** -@@@-
μ μ보μ΄μκ² μ§λ§, 곡백(" ")μ μ μΈν λͺ¨λ λ¬Έμλ€μ μ ννλ μ κ·μμ λλ€.
μλμ μ§μ ν΄ νμ μ ν΄μ£ΌκΈ°
*
, +
, ?
λ λͺ¨λ νμλ₯Ό μ§μ μ ν΄μ€ μ μμμ£ ? μ€κ΄νΈ()λ₯Ό μ¬μ©νλ©΄ μ΄λ° νμλ μ ν΄μ€ μκ° μμ΅λλ€.
Source:
One ring to bring them all and in the darkness bind them
.{5}
first match: One ring to bring them all and in the darkness bind them
matches: One ring to bring them all and in the darkness bind them
μ΄λ€ λ¬Έμ건 5ν λ°μν κ²½μ°λ₯Ό μ°Ύμλ΄λ μ κ·μμ λλ€.
[els]{1,3}
fist match: One ring to bring them all and in the darkness bind them
matches: One ring to bring them all and in the darkness bind them
λκ΄νΈ μμ μλ e, l, sκ° μ΅μ 1ν, μ΅λ 3ν λ°μνλ κ²½μ°λ₯Ό μ°Ύμλ΄λ μ κ·μμ΄κ² λ€μ!
[a-z]{3,}
first match: One ring to bring them all and in the darkness bind them
matches: One ring to bring them all and in the darkness bind them
aλΆν° zκΉμ§ (μλ¬Έμ)μ λ¬Έμλ€μ΄ μ΅μ 3ν λ°λ³΅λμ΄ λνλλ κ²½μ°λ₯Ό μ°Ύλ μ κ·μμ λλ€.
μ€κ΄νΈμ μμ΄λ λ€ μ«μλ₯Ό μλ΅νλ©΄ κ°κ° μ΅μ, μ΅λ νμλ₯Ό μ§μ ν΄μ£Όμ§ μκ² λ€λ μλ―Έλ‘ μ¬μ©λ©λλ€.
μλμ +
?
:μλμ λ€μ
?
λ₯Ό ν¨κ» μ¬μ©ν μλ μλλ°μ.. μ΄λλ?
μ μλ―Έκ° μ΄μ§ λ¬λΌμ§λλ€.
μμ μλμλ₯Ό "lazy"νκ² μ μ©νκ² λ€λ μλ―ΈμΈλ°μ, Lazy QuantifierλΌλ ν€μλλ₯Ό μμλμλ©΄ μ’μ κ² κ°μ΅λλ€.
μλ―Έλ κ°λ₯ν μ μ λ¬Έμλ₯Ό 맀μΉμν€κ² λ€λ λ»μ΄μ¬μ μ‘°κ±΄μ΄ μ€μ²©λμ΄ λ°μν λ, μ€μ²©μ λ°λ‘ μ²λ¦¬ν μ§ νΉμ ν΅μ±λ‘ μ²λ¦¬ν΄λ²λ¦΄μ§λ₯Ό κ²°μ ν΄μ€ μ μμ΅λλ€.
Source:
texttext2
<div>.+</div>
first match: <div>text</div><div>text2</div>
μλλ κ° div
νκ·Έλ€μ λΆλ¦¬ν΄μ μ²λ¦¬νλ κ²μ΄μμ΅λλ€.
νμ§λ§ 맨 μμ <div>
νκ·Έμ 맨 λ€μ </div>
νκ·Έκ° μ‘°κ±΄μ λ§μΌλ©΄μ κ·Έ μ€κ°μ λͺ¨λ λ¬Έμλ€μ΄ ν¬ν¨λκ³ λ§μμ£ .
<div>.+?</div>
first match: <div>text</div><div>text2</div>
?
λ₯Ό μ¬μ©ν΄ lazyνκ² μ‘°κ±΄μ μ μ©ν΄μ€μΌλ‘μ¨ κ°λ₯ν μ μ λ¬Έμλ₯Ό 맀μΉμν¨ κ²μ λ³Ό μ μμ΅λλ€.
Character Class
μ κ·μμλ μ§κΈκΉμ§ μ¬μ©ν κ²½μ°λ€ μ€ μμ£Ό μ°μ΄λ κ²½μ°λ€μ μ’ λ κ°νΈν λ°©μμΌλ‘ μ 곡νκΈ°λ ν©λλ€.
Source:
A1 B2 c3 d_4 e:5 ffGG77--___--
μΊλ¦ν° ν΄λμ€
\w
matches: A1 B2 c3 d_4 e:5 ffGG77--___--
wλ wordλ₯Ό μ€μ¬μ λΆμΈ λ§μ λλ€.
μνλ²³, μ«μ, μΈλλ°(_)λ₯Ό ν΅ νμ΄μ \w
λ‘ ννν μ μλκ±°μ£ ..!
κ·Έλ¬λκΉ \w
λ [A-z0-9_]
μ κ°μ ννμΈκ²λλ€.
Notes: 곡백μ wordμ ν¬ν¨λμ§ μμ΅λλ€.
\W
matches: A1 B2 c3 d_4 e:5 ffGG77 -- ___ --
μ΄λ²μ wκ° λλ¬Έμμ λλ€.
μΊλ¦ν° ν΄λμ€ ννμμ λλ¬Έμλ μλ¬Έμμ μ λ°λμ μλ―Έλ₯Ό κ°μ§λλ€.
κ·Έλ¬λ©΄ \W
λ wordκ° μλλ€. λΌλ μλ―Έλ₯Ό κ°μ§κ² λλ κ²μ΄μ£ .
μμμ κ²½μ° μ€κ°μ μλ -λ§ ν¬ν¨μ΄ λλ€μ.
\d
matches: A1 B2 c3 d_4 e:5 ffGG77--___--
dλ digitμ μ€μΈ λ§μ λλ€.
μ«μλ₯Ό μλ―Ένλ ννμ΄κ² μ£ !
\b
bλ boundaryλ₯Ό μ€μΈ λ§μ λλ€.
μ£Όμ΄μ§ 쑰건μ \w
μ \W
μ κ²½κ³μμ μ°ΎμλΈλ€λ μλ―Έμ
λλ€.
wordμ wordκ° μλ κ²½κ³μ μλ μμλ€ μ€μμ μ°Ύκ² λ€λ μλ―ΈμΈλ°μ..
Source: cat concat
\bcat
matches: cat concat
catμ μμ΄ λ¬Έμ(n)μ λΆμ΄μλ concat μ μ νμ΄ λμ§ μμμ£ ?
cat\b
matches: cat concat
μ΄ κ²½μ°λ concatμ λ€μ λ¬Έμκ° μμΌλ μ νμ΄ λλ κ²μ λλ€.
\A
, \Z
μ΄ λμ ^
, $
μ μ μ¬ν κΈ°λ₯μ ν©λλ€.
κ°κ° 맨 μμ μμμ 맨 λ€μ μμλ₯Ό μ°Ύλλ°μ..
^
μ $
μμ μ°¨μ΄μ μ΄λΌλ©΄ multilineμμλ λͺ¨λ λΌμΈμ λν΄ μ μ©μ΄ λλ€λ κ²μ
λλ€.
Source: Test 1
Test 2
Test 3
^Test
matches: Test 1 \n Test 2 \n Test 3
\ATest
matches: Test 1 \n Test 2 \n Test 3
μ°¨μ΄λ₯Ό λ°λ‘ μ μ μμ£ ?
λ€μ ν¬μ€νΈμμλ μ΄λ° μ κ·μμ Swiftμμ μ΄λ»κ² λ€λ£¨λμ§μ λν΄ μμ보λλ‘ νκ² μ΅λλ€.
Reference