- English
- EspaΓ±ol
- FranΓ§ais
- PortuguΓͺs do Brasil
- δΈζη
- ζ₯ζ¬θͺ
- νκ΅μ΄
- Turkish
- Greek
- Magyar
- Polish
- Π ΡΡΡΠΊΠΈΠΉ
- TiαΊΏng Viα»t
- ΩΨ§Ψ±Ψ³Ϋ
- Χ’ΧΧ¨ΧΧͺ
μ κ·ννμμ ν μ€νΈμμ νΉμ ν¨ν΄μ μ°Ύμλ΄λλ° μ¬μ©λλ λ¬Έμ νΉμ κΈ°νΈλ€μ μ§ν©μ΄λ€.
μ κ·ννμ(Regular expression)μ λμ λ¬Έμμ΄μ μΌμͺ½μμ μ€λ₯Έμͺ½ λ°©ν₯μΌλ‘ λ§€μΉλλ νλμ ν¨ν΄μ΄λ€. "Regular expression"μ΄λΌκ³ λ§€λ² λ°μνκΈ° μ΄λ ΅κΈ° λλ¬Έμ, λ³΄ν΅ μ½μ΄λ‘ "regex" νΉμ "regexp", "μ κ·μ"μΌλ‘ μΆμ½λμ΄ μ¬μ©λλ€. μ κ· ννμμ λ¬Έμμ΄ λ΄λΆμ ν μ€νΈ λ체, ν¬λ§·μ μ ν¨μ± κ²μ¬, ν¨ν΄ λ§€μΉμ κΈ°λ°μΌλ‘ν λ¬Έμμ΄μμ μΌλΆ ν μ€νΈλ₯Ό μΆμΆ, κ·Έλ¦¬κ³ κ·Έ μΈμ λ€μν λͺ©μ μ μν΄ μ¬μ©λλ€.
λΉμ μ΄ νλμ μ΄ν리μΌμ΄μ μ μμ±νκ³ μκ³ μ¬μ©μκ° μ¬μ©μλͺ μ μ νν λ μ¬μ©λλ κ·μΉλ€μ μ νκ³ μΆλ€κ³ μμν΄λ³΄μ. μλ₯Ό λ€μ΄, μ°λ¦¬λ μ¬μ©μλͺ μ λ¬Έμ, μ«μ, λ°μ€ λ¬Έμ(_), κ·Έλ¦¬κ³ νμ΄νμ΄ ν¬ν¨λλ κ²μ νμ©νκ³ μΆλ€. λν, μ¬μ©μλͺ μ κΈμμλ₯Ό μ νν΄μ μ¬μ©μλͺ μ΄ μ§μ λΆν΄λ³΄μ΄μ§ μλλ‘ νκ³ μΆλ€. μ΄λ μλ μ κ·ννμμ μ¬μ©ν΄ μ λ ₯λ μ¬μ©μλͺ μ΄ ν΄λΉ κ·μΉμ λ§λμ§ κ²μ¬ν μ μλ€.
μμ μ κ· ννμμ john_doe, jo-hn_doe, κ·Έλ¦¬κ³ john12_as λ¬Έμμ΄μ λ°μλ€μΌ μ μλ€. Joλ λλ¬Έμλ₯Ό ν¬ν¨νκ³ μκ³ κΈΈμ΄κ° λ무 μ§§κΈ° λλ¬Έμ μμ μ κ·ννμκ³Ό λ§€μΉλμ§ μλλ€.
- κΈ°λ³Έ λ§€μ³
- λ©ν λ¬Έμ
- λ¨μΆν λ¬Έμμ΄ μ§ν©
- μ νλ°©νμ
- νλκ·Έ
- νμμ vs κ²μΌλ₯Έ λ§€μΉ
νλμ μ κ· ννμμ λ¨μ§ ν
μ€νΈ λ΄λΆμ κ²μμ μννκΈ° μν λ¬Έμμ΄μ ν¨ν΄μ΄λ€. μλ₯Ό λ€μ΄, μ κ· ννμ theλ λ¬Έμ t λ€μμ λ¬Έμ h, κ·Έ λ€μμ λ¬Έμ eκ° λμ€λ κ²μ μλ―Ένλ€.
"the" => The fat cat sat on the mat.
μ κ· ννμ 123μ λ¬Έμμ΄ 123μ λ§€μΉλλ€. μ κ· ννμμ μ κ· ννμμ κ° λ¬Έμ(Character)μ μ
λ ₯λ λ¬Έμμ΄μ κ° λ¬Έμ(Character)λ₯Ό λΉκ΅ν¨μΌλ‘μ¨ ν΄λΉ λ¬Έμμ΄κ³Ό λ§€μΉλλ€. μ κ· ννμλ€μ μΌλ°μ μΌλ‘ λμλ¬Έμλ₯Ό ꡬλΆνκΈ° λλ¬Έμ, μ κ· ννμ Theλ λ¬Έμμ΄ theμ λ§€μΉλμ§ μλλ€.
"The" => The fat cat sat on the mat.
λ©ν λ¬Έμλ€μ μ κ· ννμμ λΉλ© λΈλ½λ€μ΄λ€. λ©ν λ¬Έμλ€μ μ체μ μΈ μλ―Έλ₯Ό κ°μ§μ§ μκ³ νΉλ³ν λ°©μμΌλ‘ ν΄μλμ΄μ§λ€. μ΄λ€ λ©ν λ¬Έμμ΄λ€μ νΉλ³ν μλ―Έλ₯Ό κ°μ§λ©° λκ΄νΈμμμ μ°μΈλ€. μλλ μ΄λ¬ν λ©ν λ¬Έμμ΄λ€μ΄λ€:
| λ©ν λ¬Έμ | μ€λͺ |
|---|---|
| . | μ¨μ (Period)λ μ€λ°κΏμ μ μΈν μ΄λ€ μ’ λ₯μ λ¨μΌ λ¬Έμμ λ§€μΉ. |
| [ ] | λ¬Έμ ν΄λμ€. λκ΄νΈ μ¬μ΄μ μλ λ¬Έμλ€λ‘ λ§€μΉ. |
| [^ ] | λΆμ λ¬Έμ ν΄λμ€. λκ΄νΈ μμ ν¬ν¨λμ§ μμ λͺ¨λ λ¬Έμλ€λ‘ λ§€μΉ. |
| * | μ΄ λ©ν λ¬Έμμ λ°λ‘ μμ μλ μ¬λ³Όμ΄ 0λ² μ΄μ λ°λ³΅λ λ¬Έμλ€κ³Ό λ§€μΉ. |
| + | μ΄ λ©ν λ¬Έμμ λ°λ‘ μμ μλ μ¬λ³Όμ΄ νλ² μ΄μ λ°λ³΅λ λ¬Έμλ€κ³Ό λ§€μΉ. |
| ? | μ΄ λ©ν λ¬Έμμ λ°λ‘ μμ μλ μ¬λ³Όμ μ νμ (optional)μΌλ‘ λ§λ¬. |
| {n,m} | μ€κ΄νΈ. μ΄ λ©ν λ¬Έμμ λ°λ‘ μμ μμΉν μ¬λ³Όμ΄ μ΅μ nλ² μ΅λ mλ²μ λ°λ³΅λ λ¬Έμλ€κ³Ό λ§€μΉ. |
| (xyz) | λ¬Έμ κ·Έλ£Ή. λ¬Έμμ΄ xyzμ μ νν κ°μ μμλ₯Ό κ°μ§ λ¬Έμλ€κ³Ό λ§€μΉ. |
| | | λμ. λ¬Έμκ° μ΄ λ©ν λ¬Έμμ μμ μλ μ¬λ³Όμ΄κ±°λ λ€μ μλ μ¬λ³Όμ΄λ©΄ λ§€μΉ. |
| \ | λ€μ λ¬Έμ μ΄μ€μΌμ΄ν(Escape). μμ½λ λ¬Έμμ΄λ€ [ ] ( ) { } . * + ? ^ $ \ |μ μ΄μ€μΌμ΄νν¨μΌλ‘μ¨ κ·Έ μ체μ λ§€μΉλλ κ²μ νμ©. |
| ^ | μ λ ₯μ μμκ³Ό λ§€μΉ. |
| $ | μ λ ₯μ λκ³Ό λ§€μΉ. |
λ§μΉ¨ν(.)λ λ©ν λ¬Έμμ κ°μ₯ κ°λ¨ν μλ€. λ©ν λ¬Έμ .λ μ΄λ ν λ¨μΌ λ¬Έμμλ λ§€μΉλμ§λ§ λ¦¬ν΄ νΉμ κ°ν λ¬Έμμλ λ§€μΉλμ§ μλλ€. μλ₯Ό λ€μ΄, μ κ· ννμ .arμ μ΄λ ν λ¨μΌ λ¬Έμ λ€μμ λ¬Έμ aκ° μ€κ³ , κ·Έ λ€μμ λ¬Έμ rμ΄ μ€λ ν¨ν΄μ μλ―Ένλ€.
".ar" => The car parked in the garage.
λ¬Έμ μ§ν©μ λ¬Έμ ν΄λμ€λΌκ³ λ λΆλ¦°λ€. λκ΄νΈλ μ΄ λ¬Έμ μ§ν©μ λͺ
μνκΈ° μν΄ μ¬μ©λλ€. λ¬Έμμ΄ μ§ν©λ΄μ μ¬μ©λ νμ΄νμ λ¬Έμλ€μ λ²μλ₯Ό μ§μ νλλ° μ¬μ©λλ€. λκ΄νΈ λ΄λΆμ λͺ
μλ λ¬Έμλ€μ μμλ μ€μνμ§ μλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [Tt]heλ λλ¬Έμ T νΉμ μλ¬Έμ tκ° λμ¨ λ€μμ, λ¬Έμ hκ° λμ€κ³ κ·Έ λ€μ λ¬Έμ eκ° λμ€λ ν¨ν΄μ μλ―Ένλ€.
"[Tt]he" => The car parked in the garage.
νμ§λ§, λ¬Έμ μ§ν© λ΄λΆμμ μ¬μ©λλ μ¨μ (Period)μ μ¨μ κ·Έ μ체λ₯Ό μλ―Ένλ€. μ κ· ννμ ar[.]μ μλ¬Έμ a λ€μμ λ¬Έμ rμ΄ μ€κ³ κ·Έ λ€μ λ¬Έμ .μ΄ μ€λ ν¨ν΄μ μλ―Ένλ€.
"ar[.]" => A garage is a good place to park a car.
μΌλ°μ μΌλ‘, μΊλΏ κΈ°νΈ(^)λ λ¬Έμμ΄μ μμμ§μ μ λνλ΄μ§λ§, μΌμͺ½ λκ΄νΈ λ°λ‘ λ€μ μμΉνμλλ ν΄λΉ λ¬Έμ μ§ν©μ λΆμ (negation)μ λνλΈλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [^c]arμ λ¬Έμ cλ₯Ό μ μΈν μ΄λ ν λ¬Έμλ€μ λ¬Έμ aκ° μ€κ³ , κ·Έ λ€μ λ¬Έμ rμ΄ μ€λ ν¨ν΄μ μλ―Ένλ€.
"[^c]ar" => The car parked in the garage.
λ©ν λ¬Έμ +, * λλ ?μ νμν¨ν΄(subpattern)μ΄ λͺ λ² λ°μνλμ§ μ§μ νλλ° μ¬μ©λλ€. μ΄λ¬ν λ©ν λ¬Έμλ€μ μν©μ λ°λΌ λ€λ₯΄κ² λμνλ€.
* λΆνΈλ λΆνΈ μμ μμΉν λ§€μ²(matcher)κ° 0λ² μ΄μ λ°λ³΅λ λ¬Έμμ΄κ³Ό λ§€μΉλλ€. μ κ· ννμ a*μ μλ¬Έμ aκ° 0λ² μ΄μ λ°λ³΅λλ ν¨ν΄μ μλ―Ένλ€. νμ§λ§, λ§μ½ μ΄ λ³ λΆνΈκ° λ¬Έμ μ§ν©(character set) μ§νμ λμ€λ κ²½μ°μλ λ¬Έμ μ§ν© μ 체μ λ°λ³΅μ μ°Ύκ²λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [a-z]*μ μλ¬Έμλ€μ΄ κ°―μμ μκ΄μμ΄ μ°μμΌλ‘ λ°λ³΅λλ ν¨ν΄μ μλ―Ένλ€.
"[a-z]*" => The car parked in the garage #21.
* λΆνΈλ λ©ν λ¬Έμ .μ ν¨κ» λͺ¨λ λ¬Έμμ΄κ³Ό λ§€μΉλλ ν¨ν΄μ λ§λλλ° μ¬μ©λ μ μλ€. λν, * λΆνΈλ 곡백 λ¬Έμ \sμ ν¨κ» 곡백 λ¬Έμλ€λ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄κ³Ό λ§€μΉλλ ν¨ν΄μ λ§λλλ° μ¬μ©λ μ μλ€. μλ₯Ό λ€μ΄, μ κ· ννμ \s*cat\s*λ 0λ² μ΄μ 곡백문μκ° λμ¨ μ΄νμ μλ¬Έμ c, μλ¬Έμ a, μλ¬Έμ tκ° μμ²΄λ‘ λμ€κ³ κ·Έ λ€μ λ€μ 0λ² μ΄μμ 곡백문μκ° λμ€λ ν¨ν΄μ μλ―Ένλ€.
"\s*cat\s*" => The fat cat sat on the concatenation.
+ λΆνΈλ λΆνΈ μμ μμΉν λ¬Έμκ° νλ² μ΄μ λ°λ³΅λλ ν¨ν΄μ λ§λλλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ c.+tλ μλ¬Έμ cκ° λμ€κ³ , κ·Έ λ€μ νκ° μ΄μμ λ¬Έμκ° λμ¨ ν, μλ¬Έμ tκ° λμ€λ ν¨ν΄μ μλ―Ένλ€. μ¬κΈ°μ λ¬Έμ tλ ν΄λΉ λ¬Έμ₯μ μ μΌ λ§μ§λ§ κΈμ tλΌλκ²μ λͺ
ννν νμκ° μλ€.
"c.+t" => The fat cat sat on the mat.
μ κ· ννμμμ λ©ν λ¬Έμ ?λ μ ν λ¬Έμλ₯Ό μ νμ μΌλ‘ λ§λλ μν μ νλ€. λ¬Όμνλ λΆνΈ μμ μ°μ¬μ§ λ¬Έμκ° μ νμ μΌλ‘ λμ€λ ν¨ν΄μ λνλ΄λλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [T]?heλ λλ¬Έμ Tκ° μ νμ μΌλ‘ λμ¨ μ΄νμ, κ·Έ λ€μ μλ¬Έμ h, κ·Έ λ€μ μλ¬Έμ eκ° λμ€λ ν¨ν΄μ μλ―Ένλ€.
"[T]he" => The car is parked in the garage.
"[T]?he" => The car is parked in the garage.
μ κ· ννμμμ μ λμ(quantifier)λΌκ³ λ λΆλ¦¬λ μ€κ΄νΈλ νλμ λ¬Έμ νΉμ λ¬Έμ μ§ν©μΌλ‘ νμλ λ¬Έμκ° λͺλ² λ°λ³΅λλμ§ λͺ
μνλλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [0-9]{2,3}μ μ«μ λ¬Έμ(0λΆν° 9μ¬μ΄μ λ¬Έμ)κ° μ΅μ 2λ², μ΅λ 3λ² μ°μν΄μ λμ€λ λ¬Έμμ΄ ν¨ν΄μ μλ―Ένλ€.
"[0-9]{2,3}" => The number was 9.9997 but we rounded it off to 10.0.
λλ²μ§Έ μ«μλ₯Ό μλ΅νλ κ²μ΄ κ°λ₯νλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [0-9]{2,}λ 2λ² μ΄μμ μ«μκ° μ°μμΌλ‘ λμ€λ ν¨ν΄μ μλ―Ένλ€. λ§μ½ μ¬κΈ°μ μΌνλ₯Ό μμ νλ κ²½μ°, μ κ· ννμ [0-9]{3}μ μ«μκ° μ νν 3λ² μ°μν΄μ λμ€λ ν¨ν΄μ μλ―Ένλ€.
"[0-9]{2,}" => The number was 9.9997 but we rounded it off to 10.0.
"[0-9]{3}" => The number was 9.9997 but we rounded it off to 10.0.
μΊ‘μ³λ§ κ·Έλ£Ήμ κ΄νΈ (...) μμ μ°μ¬μ§ νμ ν¨ν΄λ€μ κ·Έλ£Ήμ΄λ€. μμμ λ
Όμνλ―μ΄, μ κ· ννμμμ νλμ λ¬Έμ λ€μ μ λμ(quantifier)λ₯Ό λ£λ κ²½μ°μλ ν΄λΉ λ¬Έμμ λ°λ³΅μ λνλΈλ€. νμ§λ§, λ§μ½ νλμ μΊ‘μ³λ§ κ·Έλ£Ή λ€μ μ λμλ₯Ό λ£λ κ²½μ°μλ μΊ‘μ³λ§ κ·Έλ£Ή μ 체μ λ°λ³΅μ λνλ΄κ² λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ (ab)*λ λ¬Έμ "ab"κ° 0λ² μ΄μ λ°λ³΅λλ ν¨ν΄μ μλ―Ένλ€. λμ λΆνΈμΈ | λν λ¬Έμ κ·Έλ£Ή λ΄λΆμμ μ¬μ©ν μ μλ€. μλ₯Ό λ€μ΄, μ κ· ννμ (c|g|p)arμ μλ¬Έμ c, g νΉμ pκ° λμ¨ μ΄νμ λ¬Έμ aκ° λμ€κ³ κ·Έ λ€μ λ¬Έμ rμ΄ λμ€λ ν¨ν΄μ μλ―Ένλ€.
"(c|g|p)ar" => The car is parked in the garage.
μΊ‘μ²λ§ κ·Έλ£Ήμ λΆλͺ¨ μΈμ΄μμ μ¬μ©νκΈ° μν΄ λ¬Έμλ₯Ό μΌμΉμν¬λΏλ§ μλλΌ λ¬Έμλ₯Ό μΊ‘μ²νλ€λ μ μ μ μν΄μΌ νλ€. λΆλͺ¨ μΈμ΄λ νμ΄μ¬μ΄λ μλ° μ€ν¬λ¦½νΈ λλ ν¨μ μ μμμ μ κ· ννμμ ꡬννλ κ±°μ λͺ¨λ μΈμ΄κ° λ μ μλ€.
λ
Ό-μΊ‘μ³λ§ κ·Έλ£Ήμ μ€μ§ λ¬Έμμ΄μ λ§€μΉλμ§λ§, κ·Έλ£Ήμ μΊ‘μ³νμ§ μλ μΊ‘μ³λ§ κ·Έλ£Ήμ΄λ€. λ
Ό-μΊ‘μ³λ§ κ·Έλ£Ήμ (...) κ΄νΈμμ ?: λ‘ νμλλ€. μλ₯Ό λ€μ΄ μ κ·μ (?:c|g|p)ar λ (c|g|p)arμ κ°μ λ¬Έμμ΄μ λ§€μΉνλ κ²μμ μ μ¬νμ§λ§, μΊ‘μ³λ§ κ·Έλ£Ήμ λ§λ€μ§ μλλ€.
"(?:c|g|p)ar" => The car is parked in the garage.
λ Ό-μΊ‘μ²λ§ κ·Έλ£Ήμ μ°ΎκΈ° λ° λ³κ²½ κΈ°λ₯μμ μ¬μ©νκ±°λ μΊ‘μ² κ·Έλ£Ή ν¨κ» μ¬μ©νμ¬ λ€λ₯Έ μ’ λ₯μ μΆλ ₯ μμ±μ overviewλ₯Ό μ μ§ν λ μ μ©νλ€. λν 4. μ νλ°©νμλ₯Ό 보μλΌ.
μ κ· ννμμμ μμ§ λ§λ λΆνΈ |λ λμμ μ μνλλ° μ¬μ©λλ€. λμ λΆνΈλ μ¬λ¬κ°μ ννμλ€ μ¬μ΄μ 쑰건과λ κ°λ€. μ§κΈμ―€ λΉμ μ λ¬Έμ μ§ν©(Character set)κ³Ό λμ λΆνΈκ° λμΌνκ² λμνλ€κ³ μκ°νκ³ μμ κ²μ΄λ€. νμ§λ§, λ¬Έμ μ§ν©κ³Ό λμ λΆνΈ μ¬μ΄μ κ°μ₯ ν° μ°¨μ΄μ μ λ¬Έμ μ§ν©μ λ¬Έμ μμ€μμ λμνλ λ°λ©΄, λμ λΆνΈλ ννμ μμ€μμ λμνλ€λ κ²μ΄λ€. μλ₯Ό λ€μ΄, μ κ· ννμ (T|t)he|carλ λλ¬Έμ T νΉμ μλ¬Έμ tκ° λμ€κ³ λ¬Έμ h, λ¬Έμ eκ° μ°¨λ‘λ‘ λμ€κ±°λ λ¬Έμ c, λ¬Έμ a, λ¬Έμ rμ΄ μ°¨λ‘λ‘ λμ€λ ν¨ν΄μ μλ―Ένλ€.
"(T|t)he|car" => The car is parked in the garage.
λ°± μ¬λμ \λ μ κ· ννμμμ λ€μμ λμ€λ λΆνΈλ₯Ό μ΄μ€μΌμ΄ννλλ° μ¬μ©λλ€. λ°± μ¬λμλ μμ½ λ¬Έμλ€μΈ { } [ ] / \ + * . $ ^ | ?λ₯Ό λ©ν λΆνΈκ° μλ λ¬Έμ κ·Έ μμ²΄λ‘ λ§€μΉλλλ‘ λͺ
μνλ€. νΉμ λ¬Έμλ₯Ό λ§€μΉ μΊλ¦ν°λ‘ μ¬μ©νκΈ° μν΄μλ λ°± μ¬λμ \λ₯Ό ν΄λΉ νΉμ λ¬Έμ μμ λΆμ΄λ©΄ λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ .μ κ°νμ μ μΈν μ΄λ€ λ¬Έμμ λ§€μΉλλ€. μ
λ ₯ λ¬Έμμ΄μ ν¬ν¨λ . λ¬Έμλ₯Ό λ§€μΉμν€λ μ κ· ννμ (f|c|m)at\.?μ μλ¬Έμ f, c λλ m μ΄νμ μλ¬Έμ aμ tκ° μ°¨λ‘λ‘ λ±μ₯νκ³ μ΄νμ λ¬Έμ .κ° μ νμ μΌλ‘ λνλλ ν¨ν΄μ μλ―Ένλ€.
"(f|c|m)at\.?" => The fat cat sat on the mat.
μ κ· ννμμμ μ΅μ»€λ λ§€μΉ λ¬Έμκ° ννμμ μμ λ¬ΈμμΈμ§ νΉμ λ λ¬ΈμμΈμ§ λͺ
μνλλ° μ¬μ©λλ€. μ΅μ»€λ λκ°μ§ μ’
λ₯κ° μλ€: 첫λ²μ§Έ μ’
λ₯μΈ μΊλΏ λΆνΈ ^λ λ§€μΉ λ¬Έμκ° μ
λ ₯ λ¬Έμμ΄μ 첫 μμ λ¬ΈμμΈμ§ λνλ΄λλ° μ¬μ©λλ©° λλ²μ§Έ μ’
λ₯μΈ λ¬λ¬ λΆνΈ $λ ν΄λΉ λ§€μΉ λ¬Έμκ° μ
λ ₯ λ¬Έμμ λ§μ§λ§ λ¬ΈμλΌλ κ²μ λͺ
μνλλ° μ¬μ©λλ€.
μΊλΏ λΆνΈ ^λ λ§€μΉ λ¬Έμκ° ννμμ μμμ΄λΌλ κ²μ λͺ
μνλλ° μ¬μ©λλ€. λ§μ½ (aκ° μμ λ¬ΈμμΈμ§ νμΈνλ) μ κ· ννμ ^aλ₯Ό μ
λ ₯ λ¬Έμμ΄ abcμ μ μ©νλ©΄, μ΄ μ κ· ννμμ aλ₯Ό λ§€μΉ κ²°κ³Όκ°μΌλ‘ λ΄λ³΄λΈλ€. λ°λ©΄, μ κ· ννμ ^bλ₯Ό μμ μ
λ ₯ λ¬Έμμ΄μ μ μ©νλ©΄, μλ¬΄λ° λ§€μΉλ μΌμ΄λμ§ μλλ€. μλνλ©΄ μ
λ ₯ λ¬Έμμ΄ abcμμ "b"λ μ²μ μμ λ¬Έμκ° μλκΈ° λλ¬Έμ΄λ€. λ λ€λ₯Έ μ κ· ννμμΈ ^(T|t)heλ₯Ό μ΄ν΄λ³΄μ. μ΄ μ κ· ννμμ λλ¬Έμ T λλ μλ¬Έμ tκ° μ
λ ₯ λ¬Έμμ΄μ μμμΌλ‘ λμ€κ³ , κ·Έ λ€μ λ¬Έμ hμ λ¬Έμ eκ° μ°¨λ‘λ‘ λμ€λ ν¨ν΄μ μλ―Ένλ€.
"(T|t)he" => The car is parked in the garage.
"^(T|t)he" => The car is parked in the garage.
λ¬λ¬ λΆνΈ $λ μ
λ ₯ λ¬Έμμ΄μ λ§μ§λ§ λ¬Έμκ° λ§€μΉ λ¬Έμλ‘ λλλμ§ νμΈνλλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ (at\.)$λ μλ¬Έμ aμ t κ·Έλ¦¬κ³ λ¬Έμ .κ° μμλλ‘ μ
λ ₯ λ¬Έμμ΄μ 맨 λ§μ§λ§μ λμ€λμ§ νμΈνλ ν¨ν΄μ μλ―Ένλ€.
"(at\.)" => The fat cat. sat. on the mat.
"(at\.)$" => The fat cat. sat. on the mat.
μ κ· ννμμ μΌλ°μ μΌλ‘ μ¬μ©λλ λ¬Έμμ΄ μ§ν©λ€μ κ°νΈνκ² μ¬μ©ν μ μλλ‘ μ¬λ¬ λ¨μΆνλ€μ μ 곡νλ€. λ¨μΆν λ¬Έμμ΄ μ§ν©μ μλμ κ°λ€.
| λ¨μΆν | μ€λͺ |
|---|---|
| . | κ°νμ μ μΈν λͺ¨λ λ¬Έμ |
| \w | μμ«μ λ¬Έμμ λ§€μΉ: [a-zA-Z0-9_] |
| \W | μμ«μ λ¬Έμκ° μλ λ¬Έμμ λ§€μΉ: [^\w] |
| \d | μ«μμ λ§€μΉ: [0-9] |
| \D | μ«μκ° μλ λ¬Έμμ λ§€μΉ: [^\d] |
| \s | 곡백 λ¬Έμμ λ§€μΉ: [\t\n\f\r\p{Z}] |
| \S | 곡백 λ¬Έμκ° μλ λ¬Έμμ λ§€μΉ: [^\s] |
λλλ‘ μ νλ°©νμLookaroundμ΄λΌκ³ μλ €μ§ νλ°©νμLookbehindκ³Ό μ λ°©νμLookaheadμ (ν¨ν΄ λ§€μΉμ μν΄μ μ¬μ©λμ§λ§ λ§€μΉλ 리μ€νΈμλ ν¬ν¨λμ§ μλ) λ-μΊ‘μ³λ§ κ·Έλ£Ή μ νΉμ μ’
λ₯λ€μ΄λ€. μ νλ°©νμμ νλμ ν¨ν΄μ΄ λ€λ₯Έ νΉμ ν¨ν΄ μ μ΄λ νμ λνλλ 쑰건μ κ°μ§κ³ μμλ μ¬μ©νλ€. μλ₯Ό λ€μ΄, μ°λ¦¬κ° μ
λ ₯ λ¬Έμμ΄ $4.44 and $10.88μ λν΄μ λ¬λ¬ λΆνΈ $μ΄νμ λμ€λ λͺ¨λ μ«μλ₯Ό λ§€μΉμν€κ³ μΆλ€κ³ νμ. μ΄λ μ κ· ννμ (?<=\$)[0-9\.]*λ₯Ό μ¬μ©ν μ μλ€. μ΄ μ κ· ννμμ $ λ¬Έμ λ€μ λμ€λ λ¬Έμ .μ ν¬ν¨ν λͺ¨λ μ«μ λ¬Έμλ₯Ό μλ―Ένλ€. λ€μμ μ κ· ννμμμ μ¬μ©λλ μ νλ°©νμλ€μ΄λ€.
| λΆνΈ | μ€λͺ |
|---|---|
| ?= | κΈμ ν μ λ°©νμ |
| ?! | λΆμ ν μ λ°©νμ |
| ?<= | κΈμ ν νλ°©νμ |
| ?<! | λΆμ ν νλ°©νμ |
κΈμ ν μ λ°©νμλ ννμμ 첫 λΆλΆλ€μ μ λ°©νμ ννμμ΄ λ€λ°λΌ λμ€λμ§ νμΈνλλ° μ¬μ©λλ€. λ§€μΉμ κ²°κ³Όκ°μ ννμμ 첫 λΆλΆκ³Ό λ§€μΉλ ν
μ€νΈλ§μ΄ ν¬ν¨λλ€. κΈμ ν μ λ°©νμλ₯Ό μ μνκΈ° μν΄μλ κ΄νΈκ° μ¬μ©λλ€. μ΄ κ΄νΈ μμμ, λ¬Όμν λΆνΈ ?μ λ±νΈ =κ° λ€μκ³Ό κ°μ΄ μ¬μ©λλ€: (?=...). μ λ°©νμ ννμμ κ΄νΈ λ΄λΆμ λ±νΈ = λΆνΈ λ€μ μ°λ©΄λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ [T|t]he(?=\sfat)λ λλ¬Έμ T νΉμ μλ¬Έμ t λ€μ λ¬Έμ h, λ¬Έμ eκ° λμ€λ ν¨ν΄μ μλ―Ένλ€. κ΄νΈ μμμ μ°λ¦¬λ μ κ· ννμ μμ§μκ² λ°λ‘ λ€μ 곡백문μμ λ¬Έμμ΄ fatμ΄ λμ€λ The λλ theλ§ λ§€μΉνλλ‘ μ리λ κΈμ ν μ λ°©νμλ₯Ό μ μνμλ€.
"[T|t]he(?=\sfat)" => The fat cat sat on the mat.
λΆμ ν μ λ°©νμλ μ
λ ₯ λ¬Έμμ΄λ‘λΆν° νΉμ ν¨ν΄μ΄ λ€μ λμ€μ§ μκΈ°λ₯Ό λ°λΌλ μν©μμ μ¬μ©λλ€. λΆμ ν μ λ°©νμλ μ°λ¦¬κ° κΈμ ν μ λ°©νμλ₯Ό μ μνλ λ°©μκ³Ό λμΌνκ² μ μλλ€. νμ§λ§, μ μΌν μ°¨μ΄μ μ λ±νΈ λΆνΈ = λμ λΆμ λΆνΈ ! λ¬Έμλ₯Ό μ¬μ©νλ€λ κ²μ΄λ€, μ¦ (?!...). μ κ· ννμ [T|t]he(?!\sfat)λ₯Ό μ΄ν΄λ³΄λλ‘ νμ. μ΄ μ κ· ννμμ 곡백 λ¬Έμμ fat λ¬Έμμ΄μ΄ μ°μμΌλ‘ λμ€μ§ μλ λͺ¨λ The νΉμ the λ¬Έμμ΄κ³Ό λ§€μΉλλ€.
"[T|t]he(?!\sfat)" => The fat cat sat on the mat.
κΈμ ν νλ°©νμλ νΉμ ν¨ν΄λ€μ λμ€λ λ¬Έμμ΄ λ§€μΉλ₯Ό κ°μ Έμ€κΈ° μν΄μ μ¬μ©λλ€. κΈμ ν νλ°©νμλ (?<=...)λ‘ νμλλ€. μλ₯Ό λ€μ΄, μ κ· ννμ (?<=[T|t]he\s)(fat|mat)λ μ
λ ₯ λ¬Έμμ΄μμ The νΉμ the λ€μ κ³΅λ°±μ΄ λμ€κ³ , κ·Έ λ€μ fat λλ matμ΄ λμ€λ ν¨ν΄μ μλ―Ένλ€.
"(?<=[T|t]he\s)(fat|mat)" => The fat cat sat on the mat.
λΆμ ν νλ°©νμλ νΉμ ν¨ν΄μ΄ λ€μ λμ€μ§ μκΈ°λ₯Ό λ°λΌλ μν©μμ μ¬μ©λλ€. λΆμ ν νλ°©νμλ (?<!...)λ‘ νμλλ€. μλ₯Ό λ€μ΄, μ κ· ννμ (?<!(T|t)he\s)(cat)μ μμ The νΉμ the κ° μμΉνμ§ μλ λͺ¨λ cat λ¬Έμμ΄μ μλ―Ένλ€.
"(?<![T|t]he\s)(cat)" => The cat sat on cat.
νλκ·Έλ μ κ·ννμμ μΆλ ₯κ°μ μμ νκΈ° λλ¬Έμ μμ μ(modifier)λΌκ³ λ λΆλ¦°λ€. μ΄λ¬ν νλκ·Έλ€μ μ΄λ€ μμ νΉμ μ‘°ν©μΌλ‘ μ¬μ© κ°λ₯νλ©° μ κ· ννμμ μΌλΆλΆμ΄λ€.
| νλκ·Έ | μ€λͺ |
|---|---|
| i | λμλ¬Έμ ꡬλΆμμ: λ§€μΉμ΄ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ‘ μ€μ . |
| g | μ 체 κ²μ: μ λ ₯ λ¬Έμμ΄ μ 체λ₯Ό λμμΌλ‘ ν¨ν΄μ κ²μ. |
| m | λ©ν° λΌμΈ: μ΅ν° λ©ν λ¬Έμκ° κ° μ€λ§λ€ λμνλλ‘ μ€μ . |
μμ μ iλ λμλ¬Έμ ꡬλΆμλ λ§€μΉμ μννλλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ /The/giλ λλ¬Έμ T, μλ¬Έμ h, μλ¬Έμ eκ° μ°¨λ‘λ‘ λμ€λ ν¨ν΄μ μλ―Ένλ€. μ¬κΈ°μ μ κ· ννμ λ§μ§λ§μ μλ i νλκ·Έκ° μ κ· ννμ μμ§μκ² λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ‘ μλ €μ€λ€. g νλκ·Έλ μ 체 μ
λ ₯ λ¬Έμμ΄ λ΄λΆμμ ν¨ν΄μ κ²μνκΈ° μν΄ μ€μ λμλ€.
"The" => The fat cat sat on the mat.
"/The/gi" => The fat cat sat on the mat.
μμ μ gλ 첫λ²μ§Έ λ§€μΉνμ λ©μΆμ§ μκ³ κ³μν΄μ λͺ¨λ λ§€μΉμ κ²μνλ μ 체 κ²μμ μννλλ° μ¬μ©λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ /.(at)/gλ κ°νμ μ μΈν λ¬Έμκ° λμ€κ³ , κ·Έ λ€μ μλ¬Έμ a, μλ¬Έμ tκ° λμ€λ ν¨ν΄μ μλ―Ένλ€. μ¬κΈ°μμ g νλκ·Έλ₯Ό μ κ· ννμμ λ§μ§λ§μ μ€μ νκΈ° λλ¬Έμ, μ΄ ν¨ν΄μ μ
λ ₯ λ¬Έμμ΄ μ 체μμ λνλλ λͺ¨λ ν¨ν΄μ μ°ΎμλΈλ€.
"/.(at)/" => The fat cat sat on the mat.
"/.(at)/g" => The fat cat sat on the mat.
μμ μ mμ λ©ν° λΌμΈ λ§€μΉλ₯Ό μννλλ° μ¬μ©λλ€. μ΄μ μ μ΄μΌκΈ° νλ κ²μ²λΌ, μ΅μ»€ (^, $)λ ν¨ν΄μ μμκ³Ό λμ νμΈνλλ° μ¬μ©λλ€. νμ§λ§ λ§μ½ μ°λ¦¬κ° κ° λΌμΈλ§λ€ μ΄ μ΅μ»€κ° λμνκ²νκ³ μΆμΌλ©΄ m νλκ·Έλ₯Ό μ€μ νλ©΄λλ€. μλ₯Ό λ€μ΄, μ κ· ννμ /at(.)?$/gmμ μλ¬Έμ aμ μλ¬Έμ tκ° μ°¨λ‘λ‘ λμ€κ³ , μ νμ μΌλ‘ κ°νμ μ μΈν λ¬Έμκ° λμ€λ ν¨ν΄μ μλ―Ένλ€. μ¬κΈ°μ νλκ·Έ mμΌλ‘ μΈν΄μ μ κ· ννμ μμ§μ μ
λ ₯ λ¬Έμμ΄μ κ° λΌμΈμ λν΄μ ν΄λΉ ν¨ν΄μ λ§€μΉνκ² λλ€.
"/.at(.)?$/" => The fat
cat sat
on the mat.
"/.at(.)?$/gm" => The fat cat sat on the mat.
κΈ°λ³Έμ μΌλ‘ μ κ· ννμμ νμμ (greedy) λ§€μΉμ μννλλ°, μ΄λ κ°λ₯ν ν κΈΈκ² λ§€μΉνλ κ²μ μλ―Ένλ€. μ°λ¦¬λ ?λ₯Ό μ¬μ©νμ¬ κ²μΌλ₯Έ(lazy) λ°©λ² λ§€μΉν μ μμΌλ©°, κ°λ₯ν ν μ§§κ² λ§€μΉνλ κ²μ μλ―Ένλ€.
"/(.*at)/" => The fat cat sat on the mat.
"/(.*?at)/" => The fat cat sat on the mat.
- μ΄μ 리ν¬ν
- μ½λ κ°μ ν΄μ ν 리νμ€νΈ μ΄κΈ°
- μλ¬Έλ΄κΈ°
- ziishaned@gmail.com λ©μΌλ‘ μ§μ μ°λ½νκΈ° λλ
MIT Β© Zeeshan Ahmad
