unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Regex

Regex #

Pengertian #

Regular Expressions (Regex) di Python digunakan untuk mencari, mencocokkan, dan memanipulasi teks berdasarkan pola tertentu. Python menyediakan modul re untuk bekerja dengan regular expressions. Berikut adalah penjelasan tentang operasi dasar dan umum digunakan dengan modul re.

Modul re #

Untuk menggunakan fitur-fitur dari modul re, Anda harus mengimpor modul tersebut terlebih dahulu:

import re

Fungsi-Fungsi Utama #

  1. re.match(): Memeriksa kecocokan pola pada awal string.
  2. re.search(): Mencari kecocokan pola di mana saja dalam string.
  3. re.findall(): Mengembalikan semua kecocokan pola dalam bentuk list.
  4. re.finditer(): Mengembalikan iterator yang menghasilkan semua kecocokan pola dalam bentuk objek match.
  5. re.sub(): Mengganti kecocokan pola dengan string lain.
  6. re.split(): Memisahkan string berdasarkan kecocokan pola.

Operasi #

re.match() #

Fungsi re.match() mencoba mencocokkan pola pada awal string. Jika cocok, ia mengembalikan objek match; jika tidak, ia mengembalikan None.

pattern = r'\d+'
text = '123abc456'

match = re.match(pattern, text)
if match:
    print('Matched:', match.group())  # Output: Matched: 123
else:
    print('No match')

re.search() #

Fungsi re.search() mencari pola di mana saja dalam string. Jika cocok, ia mengembalikan objek match; jika tidak, ia mengembalikan None.

pattern = r'\d+'
text = 'abc123def'

search = re.search(pattern, text)
if search:
    print('Found:', search.group())  # Output: Found: 123
else:
    print('Not found')

re.findall() #

Fungsi re.findall() mengembalikan semua kecocokan pola dalam bentuk list. Jika tidak ada kecocokan, ia mengembalikan list kosong.

pattern = r'\d+'
text = 'abc123def456ghi789'

matches = re.findall(pattern, text)
print('All matches:', matches)  # Output: All matches: ['123', '456', '789']

re.finditer() #

Fungsi re.finditer() mengembalikan iterator yang menghasilkan semua kecocokan pola dalam bentuk objek match.

pattern = r'\d+'
text = 'abc123def456ghi789'

for match in re.finditer(pattern, text):
    print('Match found:', match.group())  # Output: Match found: 123, 456, 789

re.sub() #

Fungsi re.sub() mengganti kecocokan pola dengan string lain.

pattern = r'\d+'
text = 'abc123def456ghi789'
replacement = '#'

new_text = re.sub(pattern, replacement, text)
print('Replaced text:', new_text)  # Output: Replaced text: abc#def#ghi#

re.split() #

Fungsi re.split() memisahkan string berdasarkan kecocokan pola.

pattern = r'\d+'
text = 'abc123def456ghi789'

split_text = re.split(pattern, text)
print('Split text:', split_text)  # Output: Split text: ['abc', 'def', 'ghi', '']

Modifier (Flags) #

Flags adalah opsional dan mengubah perilaku pencocokan regex. Beberapa flags yang umum digunakan termasuk:

  • re.IGNORECASE (re.I): Mengabaikan kasus huruf (case-insensitive).
  • re.MULTILINE (re.M): Memungkinkan pencocokan pola di beberapa baris.
  • re.DOTALL (re.S): Memungkinkan titik (.) untuk mencocokkan karakter newline juga.

Contoh penggunaan flags:

pattern = r'^abc'
text = 'Abc\nabc'
matches = re.findall(pattern, text, flags=re.IGNORECASE | re.MULTILINE)
print(matches)  # Output: ['Abc', 'abc']

Contoh Penggunaan #

import re

# 1. re.match()
pattern = r'Hello'
text = 'Hello World'
match = re.match(pattern, text)
if match:
    print('Matched:', match.group())  # Output: Matched: Hello

# 2. re.search()
pattern = r'World'
search = re.search(pattern, text)
if search:
    print('Found:', search.group())  # Output: Found: World

# 3. re.findall()
pattern = r'\d+'
text = 'Numbers: 123, 456, and 789'
matches = re.findall(pattern, text)
print('All matches:', matches)  # Output: All matches: ['123', '456', '789']

# 4. re.finditer()
for match in re.finditer(pattern, text):
    print('Match found:', match.group())  # Output: Match found: 123, 456, 789

# 5. re.sub()
pattern = r'\d+'
replacement = '#'
new_text = re.sub(pattern, replacement, text)
print('Replaced text:', new_text)  # Output: Replaced text: Numbers: #, #, and #

# 6. re.split()
pattern = r'\s+'
split_text = re.split(pattern, text)
print('Split text:', split_text)  # Output: Split text: ['Numbers:', '123,', '456,', 'and', '789']

Regex Identifier #

Berikut adalah tabel yang mencantumkan semua simbol regex di Python beserta penjelasannya:

Daftar Identifier #

Simbol Penjelasan
. Mencocokkan sembarang karakter kecuali newline.
^ Mencocokkan awal string.
$ Mencocokkan akhir string.
* Mencocokkan 0 atau lebih dari elemen sebelumnya.
+ Mencocokkan 1 atau lebih dari elemen sebelumnya.
? Mencocokkan 0 atau 1 dari elemen sebelumnya (menjadikan elemen opsional).
{n} Mencocokkan tepat n dari elemen sebelumnya.
{n,} Mencocokkan setidaknya n dari elemen sebelumnya.
{n,m} Mencocokkan antara n dan m dari elemen sebelumnya.
[] Mencocokkan salah satu karakter dalam set.
[^] Mencocokkan karakter yang tidak ada dalam set.
\ Karakter escape yang digunakan untuk mencocokkan karakter khusus atau menandakan urutan khusus.
| Atau logika; mencocokkan salah satu dari pola yang dipisahkan oleh |
() Mengelompokkan pola dan menangkap sub-pola.
(?:...) Mengelompokkan pola tetapi tidak menangkap sub-pola (non-capturing group).
(?P<name>...) Menangkap sub-pola dan memberikan nama untuk grup yang ditangkap.
(?=...) Lookahead positif; mencocokkan posisi di mana pola berikutnya cocok.
(?!...) Lookahead negatif; mencocokkan posisi di mana pola berikutnya tidak cocok.
(?<=...) Lookbehind positif; mencocokkan posisi di mana pola sebelumnya cocok.
(?<!...) Lookbehind negatif; mencocokkan posisi di mana pola sebelumnya tidak cocok.

Escape Khusus #

Simbol Penjelasan
\d Mencocokkan digit; setara dengan [0-9].
\D Mencocokkan non-digit; setara dengan [^0-9].
\w Mencocokkan karakter alfanumerik (huruf, digit, dan underscore); setara dengan [a-zA-Z0-9_].
\W Mencocokkan karakter non-alfanumerik; setara dengan [^a-zA-Z0-9_].
\s Mencocokkan karakter spasi (spasi, tab, newline, dll.); setara dengan [ \t\n\r\f\v].
\S Mencocokkan karakter non-spasi; setara dengan [^ \t\n\r\f\v].
\b Mencocokkan batas kata.
\B Mencocokkan non-batas kata.
\A Mencocokkan awal string.
\Z Mencocokkan akhir string.
\n Mencocokkan newline.
\t Mencocokkan tab.
\r Mencocokkan carriage return.

Contoh Penggunaan #

import re

# Mencocokkan digit
pattern = r'\d+'
text = 'Jumlah 123 dan 456'
print(re.findall(pattern, text))  # Output: ['123', '456']

# Mencocokkan awal dan akhir string
pattern = r'^Hello.*World$'
text = 'Hello, Python World'
match = re.match(pattern, text)
if match:
    print('Matched:', match.group())  # Output: Matched: Hello, Python World

# Mencocokkan salah satu karakter dalam set
pattern = r'[aeiou]'
text = 'Python'
print(re.findall(pattern, text))  # Output: ['o']

# Mengelompokkan pola dan menangkap sub-pola
pattern = r'(Hello) (World)'
text = 'Hello World'
match = re.match(pattern, text)
if match:
    print('Groups:', match.groups())  # Output: Groups: ('Hello', 'World')

Kesimpulan #

Dengan memahami dan menggunakan operasi-operasi ini, Anda dapat memanfaatkan regular expressions di Python secara efektif untuk berbagai keperluan pemrosesan teks.

« Date Time
Virtual Environment »