μλ νμΈμ, μΌμ΄μΉμ λλ€.
μ€λμ μ κ·ννμμ΄ λ¬΄μμΈμ§ κ·Έλ¦¬κ³ λ¬Έλ²μ μ΄λ»κ² λλ©° μ΄λ»κ² μ¬μ©νλμ§μ λν΄μ μμλ³΄κ² μ΅λλ€.
μ κ·ννμμ΄λ?
- μ κ·ννμ(regular expression)μ΄λ κ²μ ν¨ν΄μ μ μν λ¬Έμμ΄μ΄λΌκ³ μ μν μ μμ΅λλ€. regex λλ regexpλ‘ μ€μ¬μ λ§νκΈ°λ νλ©° patternμ΄λΌκ³ νκΈ°λ ν©λλ€. μ κ·ννμμ λ³΄ν΅ μμμ string λ΄μμ νΉμ ν¨ν΄μ μΌμΉνλ λ¬Έμλ λ¬Έμμ΄μ μ°Ύμλ΄κ±°λ(find) μ°Ύμμ λ³κ²½(find and replace)ν λ λ§€μ° μ μ©νκ² μ¬μ©λ©λλ€. μ°Έκ³ λ‘ μ κ·ννμμ κ°λ μ 1950λ λμ λ―Έκ΅μ μνμ Stephen Cole Kleeneμ μν΄μ μμλμλ€κ³ ν©λλ€.
μ κ·ννμμ κΈ°λ³Έλ¬Έλ²
Boolean "or"
| : swim|swam λ "swim" λλ "swam" κΈμμ 맀μΉλ©λλ€
Grouping
μκ΄νΈλ₯Ό μ΄μ©νμ¬ κ·Έλ£Ήμ μ§μ ν μ μμ΅λλ€.
μλ₯Όλ€μ΄ sw(i|a)m ν¨ν΄μ λ°λ‘ μ μμ μ λμΌνκ² "swim"κ³Ό "swam" λ¨μ΄μ 맀μΉλ©λλ€.
μλ(κ°μ) ν¨ν΄
? : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ 0~1κ° μ‘΄μ¬
* : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ 0κ° μ΄μ μ‘΄μ¬
+ : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ 1κ° μ΄μ μ‘΄μ¬
{n} : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ μ νν nλ² μ‘΄μ¬
{min,} : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ μ΅μ min κ° μ‘΄μ¬
{min,max} : λ°λ‘ μμ μλ κΈμ λλ κ·Έλ£Ήμ΄ μ΅μ min μ΄μ μ΅λ max μ΄ν μ‘΄μ¬
μμΌλμΉ΄λ (Wildcard)
. : μμΌλμΉ΄λ λ¬Έμλ μ무 μΊλ¦ν°(any character)λ₯Ό μλ―Έν©λλ€. κ·Έλ₯ μ΄λ€ κΈμμ΄λ νΉμκΈ°νΈμΈμ§ μνλ²³μΈμ§ μ«μμΈμ§μ κ΄κ³μμ΄ 1κ°μ characterλ₯Ό μλ―Έν©λλ€. μ¦, a.b ν¨ν΄μ aμb μ¬μ΄μ μ΄λ€ λ¬Έμκ° μλ 맀μΉλ©λλ€. "acb", "a3b", "aAb" λ±λ±μ΄ λͺ¨λ 맀μΉλμ£ . μ΄ μμΌλμΉ΄λ λ¬Έμμ μλμ λνλ΄λ *λ₯Ό ν¨κ» μ¬μ©νμ¬ a.*b ν¨ν΄μΌλ‘ 맀μΉμ μλνλ©΄ "a123b", "ab", "aTTb" λ±μ λ¬Έμμ΄μ΄ λͺ¨λ 맀μΉμ΄ κ°λ₯ν©λλ€. μ¦, aμ b μ¬μ΄μ 0κ° μ΄μμ λ¬Έμκ° λ€μ΄μλ λ¬Έμμ΄μ΄ 맀μΉμ΄ λ©λλ€.
μ΄μΈ κΈ°λ³Έ ν¨ν΄
^ : λ¬Έμμ΄μ μμ
$ : λ¬Έμμ΄μ λ
[ ] : λκ΄νΈ λ΄μ λ¬Έμλ€ μ€ νλμ λ¬Έμμ 맀μΉ
[^ ] : λκ΄νΈ λ΄μ λ¬Έμλ€μ ν¬ν¨νμ§ μλ λ¬Έμμ 맀μΉ
Expression Flags
g : global
i : case insensitive
m : multiline
s : single line
u : unicode
y : sticky
μ κ·ννμ ν¨ν΄ μμ
μ κ·ννμ ν¨ν΄ | μ€λͺ | μΌμΉ λ¬Έμμ΄ |
^x | - μλ¬Έμ xλ‘ μμνλ λ¬Έμμ΄ | "xyz song" |
a$ | - λ¬Έμμ΄ λμ 곡백μ΄λ μ€λ°κΏ λ¬Έμκ° μμκ²½μ° λ§€μΉ X | "blah bla" |
a.c | - μλ¬Έμ aμ c μ¬μ΄μ νλμ λ¬Έμκ° μλ λ¬Έμμ΄ | "Javascript is easy" |
a+ | - μλ¬Έμ aκ° 1λ² μ΄μ λ°λ³΅λ¨ | "I am a boy" |
a* | - μλ¬Έμ aκ° 0λ² μ΄μ λ°λ³΅λ¨ | ba* -> "b", "ba", "baa" |
a? | - μλ¬Έμ aκ° 1λ² μ‘΄μ¬νκ±°λ μ‘΄μ¬νμ§ μλ μΌμ΄μ€ | |
a|b | - μλ¬Έμ a λλ μλ¬Έμ b | |
(a) | - μλ¬Έμ aλ₯Ό κ·Έλ£Ήν | |
(a)(b) | - κ·Έλ£Ή1μ μλ¬Έμ a, κ·Έλ£Ή 2μ μλ¬Έμ b λ§€μΉ | |
a{n} | - μλ¬Έμ aκ° nλ² λ°λ³΅λλ λ¬Έμμ΄ | |
a{min,} | - μλ¬Έμ aκ° μ΅μ minλ² λ°λ³΅λλ λ¬Έμμ΄ | |
a{min,max} | - μλ¬Έμ aκ° μ΅μ minλ², μ΅λ maxλ² λ°λ³΅λλ λ¬Έμμ΄ | |
[ab] | - μλ¬Έμ a λλ b | "I am a boy" |
[^ab] | - μλ¬Έμ aμ bλ₯Ό μ μΈν λ€λ₯Έ λ¬Έμ | "cab" |
[a-z] | - μλ¬Έμ aλΆν° zμ¬μ΄μ λ¬Έμμ€ νλ | |
[^a-y] | - μλ¬Έμ aλΆν° yκ° μλ λ€λ₯Έ λ¬Έμ | "abcz" |
\^ | νΉμλ¬Έμ ^λ₯Ό ν¨ν΄λ΄μ ν¬ν¨μν¬ λ μ¬μ© | |
\d | digit (μ«μ) | |
\D | μ«μκ° μλ λ¬Έμ | |
\s | 곡백문μ | |
\S | 곡백문μκ° μλ λ¬Έμ | |
\t | tab λ¬Έμ | |
\v | vertical tab λ¬Έμ | |
\w | μνλ²³, μ«μ, _ λ¬Έμ | |
\W | (μνλ²³, μ«μ, _ λ¬Έμ)κ° μλ λ¬Έμ |
μ€μ λ‘ ν μ€νΈλ₯Ό ν΄λ³΄κΈ° μν΄μλ μ¬λ¬ μ¨λΌμΈ μ¬μ΄νΈλ€μ΄ μ‘΄μ¬νλλ°μ, μ λ μλ μ¬μ΄νΈλ₯Ό μ μ©ν©λλ€.
ν μ€νΈ λ¬Έμμ΄λ λ§μλλ‘ μ λ ₯ν΄λ³Ό μ μκ³ ν¨ν΄μ μ λ ₯νλ©΄ μλμΌλ‘ 맀μΉλλ λ¬Έμλ€μ 컬λ¬λ§ν΄μ€λλ€.
κΈ°λ³Έμ μΈ ν μ€νΈκ° μ λ ₯λμ΄μμ΄μ μνλλλ‘ ν¨ν΄μ μ λ ₯ν΄λ³΄κ³ κΈ°λνλ 맀μΉμ΄ μ΄λ£¨μ΄ μ§λμ§ λ°λ‘λ°λ‘ νμΈμ΄ κ°λ₯ν©λλ€
λν, μ κ·μμ΄ μ΄λ€ μλ―Έλ₯Ό κ°λμ§ λμν ν΄μ£Όλ μ¬μ΄νΈλ μλλ°μ, μ¬κΈ°λ μ΄μ©ν΄λ³Όλ§ ν©λλ€.
μμ±ν μ κ·μμ΄ μ νν μ΄λ€ μλ―Έλ₯Ό κ°λμ§ μ€μ ν¨ν΄ λ§€μΉ ν μ€νΈ λ§μΌλ‘λ μ 맀ν λ μ΄μ©νλ©΄ μ’μ΅λλ€.
μ΄μμΌλ‘ μ κ·ννμμ λν΄μ κ°λ΅ν λ΄μ©μ μ 리ν΄λ³΄μμ΅λλ€.
'π» Programming' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[MySQL] json μ»¬λΌ μ λ°μ΄νΈ μλλ νμ (0) | 2020.10.20 |
---|---|
Apache Kafka μ΄μ ν (0) | 2020.09.10 |
Eclipseμ lombok μ€μΉνκΈ° (0) | 2020.08.02 |
Eclipse Version M1 M2 M3 R RC SR Difference (0) | 2020.08.02 |
[Elasticsearch] Kibanaμμ μ‘°νμ x of y shards failed μ€λ₯ λ°μ (0) | 2020.06.29 |