π‘ μν€λ°±κ³Ό
μ κ· ννμ(ζ£θ¦θ‘¨ηΎεΌ, μμ΄: regular expression, κ°λ¨ν regexp λλ regex, rational expression) λλ μ κ·μ(ζ£θ¦εΌ)μ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννλ λ° μ¬μ©νλ νμ μΈμ΄ μ΄λ€.
λ¬Έμμ΄μ μ²λ¦¬νλ λ°©λ² μ€μ νλλ‘ νΉμ ν 쑰건μ λ¬Έμλ₯Ό 'κ²μ'νκ±°λ 'μΉν'νλ κ³Όμ μ λ§€μ° κ°νΈνκ² μ²λ¦¬ ν μ μλλ‘ νλ μλ¨
<μ μ©ν μ¬μ΄νΈ>
μ κ·ννμ
. - μ€λ°κΏ λ¬Έμλ₯Ό μ μΈν λͺ¨λ κΈμλ₯Ό κ²μ, [.]μ κ²½μ°μλ DOT(.)λ¬Έμμ΄κ³Ό 맀μΉλ¨
.x
μμμ ν λ¬Έμμ μ리μλ₯Ό νννλ©° λ¬Έμμ΄μ΄ x λ‘ λλλ€λ κ²μ μλ―Ένλ€.
\ - νΉμ λ¬Έμ (., \\, [],{}, $ λ±)λ₯Ό μ°Ύμ λ νμ
\^
escape λ₯Ό νννλ©° ^ λ₯Ό λ¬Έμλ‘ μ¬μ©ν¨μ μλ―Ένλ€.
λ¬Έμ ν΄λμ€ [ ]
λ¬Έμ ν΄λμ€λ‘ λ§λ€μ΄μ§ μ κ·μμ "[ ] μ¬μ΄μ λ¬Έμλ€κ³Ό 맀μΉ"λΌλ μλ―Έλ₯Ό κ°λλ€.
= λ¬Έμ ν΄λμ€λ₯Ό λ§λλ λ©ν λ¬ΈμμΈ [ ] μ¬μ΄μλ μ΄λ€ λ¬Έμλ λ€μ΄κ° μ μλ€
[[:alpha:]] - [a-zA-Z] λλ [a-Z] μ κ°μ νν
[[:digit:]] - [0-9]μ κ°μ νν
[[:alnum:]] - [a-Z0-9]μ κ°μ νν
[[:space:]] - 곡백문μ(space) μλ―Έ
- \b - λ¨μ΄ κ²½κ³μ λμνλ€.
- \B - λ¨μ΄ κ²½κ³κ° μλ λΆλΆμ λμλλ€.
- \d - μ«μμ 맀μΉ, [0-9]μ λμΌν ννμμ΄λ€.
- \D - μ«μκ° μλ κ²κ³Ό 맀μΉ, [^0-9]μ λμΌν ννμμ΄λ€.
- \s - whitespace λ¬Έμμ 맀μΉ, [ \t \n \r \f \v]μ λμΌν ννμμ΄λ€. 맨 μμ λΉ μΉΈμ 곡백문μ(space)λ₯Ό μλ―Ένλ€.
- \S - whitespace λ¬Έμκ° μλ κ²κ³Ό 맀μΉ, [^ \t \n \r \f \v]μ λμΌν ννμμ΄λ€.
- \w - λ¬Έμ+μ«μ(alphanumeric)μ 맀μΉ, [a-zA-Z0-9_]μ λμΌν ννμμ΄λ€.
- \W - λ¬Έμ+μ«μ(alphanumeric)κ° μλ λ¬Έμμ 맀μΉ, [^a-zA-Z0-9_]μ λμΌν ννμμ΄λ€.
λ©ν λ¬Έμ { }
{ } λ©ν λ¬Έμλ₯Ό μ¬μ©νλ©΄ λ°λ³΅ νμλ₯Ό κ³ μ ν μ μλ€.
{m, n}μ κ·μμ μ¬μ©νλ©΄ λ°λ³΅ νμκ° mλΆν° nκΉμ§ 맀μΉν μ μλ€.
ca{2,5}t ==> "c + a(2~5ν λ°λ³΅) + t"
cat = match X, caa...at = match O
x{n}
λ°λ³΅μ νννλ©° x λ¬Έμκ° nλ² λ°λ³΅λ¨μ μλ―Ένλ€.
x{n,}
λ°λ³΅μ νννλ©° x λ¬Έμκ° nλ² μ΄μ λ°λ³΅λ¨μ μλ―Ένλ€.
x{n,m}
λ°λ³΅μ νννλ©° x λ¬Έμκ° μ΅μ nλ² μ΄μ μ΅λ m λ² μ΄νλ‘ λ°λ³΅λ¨μ μλ―Ένλ€.
s - spaceμ μ½μλ‘ κ³΅λ°±μ κ²μ ? μκ±°λ μκ±°λ (zero or one)
* - μκ±°λ μκ±°λ λ§κ±°λ (zero or more)
x*
λ°λ³΅μ¬λΆλ₯Ό νννλ©° x λ¬Έμκ° 0λ² λλ κ·Έ μ΄μ λ°λ³΅λ¨μ μλ―Ένλ€.
+ - νλ λλ λ§μ΄ (one or more)
x+
λ°λ³΅μ νννλ©° x λ¬Έμκ° νλ² μ΄μ λ°λ³΅λ¨μ μλ―Ένλ€.
() - () μμ λ΄μ©μ κ°μ³νλ©° κ·Έλ£Ήν
(x)
κ·Έλ£Ήμ νννλ©° x λ₯Ό κ·Έλ£ΉμΌλ‘ μ²λ¦¬ν¨μ μλ―Ένλ€.
(x)(y)
κ·Έλ£Ήλ€μ μ§ν©μ νννλ©° μμμ λΆν° μμλλ‘ λ²νΈλ₯Ό λΆμ¬νμ¬ κ΄λ¦¬νκ³ x, y λ κ° κ·Έλ£Ήμ λ°μ΄ν°λ‘ κ΄λ¦¬λλ€.
μΆμ² : https://hamait.tistory.com/342
/https?:\/\/[\w\-\.]+/g
'''
1. `http` => λ‘ μμνκ³ ,
2. `s?` => λ€μμ sλ μκ±°λ μκ³ ,
3. `:` => λ€μμ : κ° μ€κ³ ,
4. `\/\/` => λ€μμ νΉμκΈ°νΈ // κ° μ€κ³
5. `[\w\-\.]+` => \w(μλ¬Έμ, μΈλμ€μ½μ΄), νμ΄ν, μ© μΌλ‘ μ΄λ£¨μ΄μ§ λ¬Έμμ΄μ΄ νκ° μ΄μ(+) μλ€.
6. `g` => 맀μΉλλκ±Έ λͺ¨λ λ€ μ°Ύλλ€.(νλκ·Έ)
'''
<tr.*?>(.*?)</tr>
'''
1. `<tr` ⇒ λ‘ μμνλ€.
2. `.*?>` ⇒ *tr νκ·Έκ° λλ λκΉμ§*
3. *`(.*?)`* ⇒ νκ·Έλ΄ HTML λ΄μ©μ μΊ‘μ³
4. `</tr>` ⇒ λ«λ νκ·Έ
'''
(?=) - (μμ λ¬Έμκ° ν¬ν¨λμ΄μΌ ν¨)
(?!) - (μμ λ¬Έμκ° ν¬ν¨λμ§ μμμΌ ν¨)
(?<=) - (λ€μ λ¬Έμκ° ν¬ν¨λμ΄μΌ ν¨)
(?<!) - (λ€μ λ¬Έμκ° ν¬ν¨λμ§ μμμΌ ν¨)
A(?=B) - Bκ° λ°λΌμ€λ (Aμλ§ μ κ·Όν μ μλ€.)
(x)(?:y)
κ·Έλ£Ήλ€μ μ§ν©μ λν μμΈλ₯Ό νννλ©° κ·Έλ£Ή μ§ν©μΌλ‘ κ΄λ¦¬λμ§ μμμ μλ―Ένλ€.
^ - λ¬Έμμ΄μ μμ λΆλΆ νμ
== /^A/λΌκ³ νλ©΄ λ°λμ λ¬Έμμ΄μ μμμ΄ Aλ‘ μμνλ λ¬Έμμ΄μλ§ μ κ·Όν μ μλ€.
[^...]λΌκ³ νλ©΄ notμ μλ―Έλ₯Ό κ°μ§
$ - λ¬Έμμ΄μ λ λΆλΆ νμ
== /A$/λΌκ³ νλ©΄ λ¬Έμμ΄μ λ§μ§λ§ Aμλ§ μ κ·Όν μ μλ€.
== ^abc$start / end of the string
? - /A?B/λΌκ³ νλ©΄ Aκ° λ°λ³΅λλ Bμμ μλ λ¨ νλμ Aμλ§ μ κ·Όν μ μλ€ AB.
λλ Aκ° μ‘΄μ¬νμ§ μμλ Bμ μ κ·Όν μ μλ€ B.
μ κ·μ re import
reλ₯Ό μ¬μ©νκΈ° μν΄μλ import reλ₯Ό μ μΈνκ³ , re λ΄λΆ ν¨μμ patternμ μ μνμ¬ νΈμΆν©λλ€.
re.compile(pattern, flags=0)
μ κ·μ κ°μ²΄λ‘ compileν¨
μ κ·μ κ°μ²΄λ match, search, findall, finditer
match(pattern, string) | λ¬Έμμ΄μ μμλΆλΆλΆν° 맀μΉμ΄ λλμ§ κ²μ. |
search(pattern, string) | λ¬Έμμ΄μ ν¨ν΄κ³Ό 맀μΉλλ κ³³μ΄ μλμ§ κ²μ. |
findall(pattern, string) | μ κ·μκ³Ό 맀μΉλλ λͺ¨λ λ¬Έμμ΄μ 리μ€νΈλ‘ λ°ν. |
finditer(pattern, string) | μ κ·μκ³Ό 맀μΉλλ λͺ¨λ λ¬Έμμ΄μ iterator κ°μ²΄λ‘ λ°ν. |
μ 보 μΆμΆ ν¨μ
group() | 맀μΉλ λ¬Έμμ΄. |
start() | 맀μΉλ λ¬Έμμ΄ μμ μμΉ. |
end() | 맀μΉλ λ¬Έμμ΄ μ’ λ£ μμΉ. |
span() | 맀μΉλ λ¬Έμμ΄ μμκ³Ό μ’ λ£μμΉλ₯Ό ννλ‘ λ°ν. |
match, search μ°¨μ΄
re.search ν¨μλ re.match μ λΉμ·νμ§λ§, λ°λμ λ¬Έμμ΄μ μ²μλΆν° μΌμΉν΄μΌ νλ κ²μ μλλ€.
text | aaa | aaaB | Baaa | BBB |
re.match(r'aaa', text) | β | β | β | β |
re.search(r'aaa', text) | β | β | β | β |
μΆμ² : https://ponyozzang.tistory.com/279
μΆμ² : https://kibua20.tistory.com/199
'IT κ°μΈνμ΅ > Memo' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Encoding μΈμ½λ© (0) | 2022.05.07 |
---|---|
Tempfile (0) | 2022.05.07 |
Deploy (0) | 2022.05.07 |
Jenkins μ ν¨μ€ (0) | 2022.05.07 |
SQL (0) | 2022.05.07 |
λκΈ