Python
Dalam tutorial ini, Anda akan belajar tentang ekspresi reguler (RegEx), dan menggunakan modul re Python untuk bekerja dengan RegEx (dengan bantuan contoh).
Sebuah Reg ular Mantan pression (RegEx) adalah urutan karakter yang mendefinisikan pola pencarian. Misalnya,
^a...s$
Kode di atas mendefinisikan pola RegEx. Polanya adalah:setiap string lima huruf yang dimulai dengan a dan diakhiri dengan s .
Pola yang ditentukan menggunakan RegEx dapat digunakan untuk mencocokkan dengan string.
Ekspresi | String | Cocok? |
---|---|---|
^a...s$ | abs | Tidak cocok |
alias | Pertandingan | |
abyss | Pertandingan | |
Alias | Tidak cocok | |
An abacus | Tidak cocok |
Python memiliki modul bernama re
untuk bekerja dengan RegEx. Ini contohnya:
import re
pattern = '^a...s$'
test_string = 'abyss'
result = re.match(pattern, test_string)
if result:
print("Search successful.")
else:
print("Search unsuccessful.")
Di sini, kami menggunakan re.match()
berfungsi untuk mencari pola dalam test_string . Metode mengembalikan objek yang cocok jika pencarian berhasil. Jika tidak, ia mengembalikan None
.
Ada beberapa fungsi lain yang didefinisikan dalam re modul untuk bekerja dengan RegEx. Sebelum kita menjelajahinya, mari kita pelajari tentang ekspresi reguler itu sendiri.
Jika Anda sudah mengetahui dasar-dasar RegEx, lompat ke Python RegEx.
Untuk menentukan ekspresi reguler, metakarakter digunakan. Pada contoh di atas, ^
dan $
adalah metakarakter.
Metakarakter adalah karakter yang diinterpretasikan secara khusus oleh mesin RegEx. Berikut daftar metakarakter:
[] . ^ $ * + ? {} () \ |
[]
- Tanda kurung siku
Tanda kurung siku menentukan sekumpulan karakter yang ingin Anda cocokkan.
Ekspresi | String | Cocok? |
---|---|---|
[abc] | a | 1 pertandingan |
ac | 2 pertandingan | |
Hey Jude | Tidak cocok | |
abc de ca | 5 pertandingan |
Di sini, [abc]
akan cocok jika string yang Anda coba cocokkan berisi salah satu dari a
, b
atau c
.
Anda juga dapat menentukan rentang karakter menggunakan -
di dalam tanda kurung siku.
[a-e]
sama dengan [abcde]
.[1-4]
sama dengan [1234]
.[0-39]
sama dengan [01239]
.
Anda dapat melengkapi (membalikkan) set karakter dengan menggunakan tanda sisipan ^
simbol di awal tanda kurung siku.
[^abc]
berarti karakter apa pun kecuali a atau b atau c .[^0-9]
berarti karakter non-digit apa pun.
.
- Periode
Tanda titik cocok dengan satu karakter apa pun (kecuali baris baru '\n'
).
Ekspresi | String | Cocok? |
---|---|---|
.. | a | Tidak cocok |
ac | 1 pertandingan | |
acd | 1 pertandingan | |
acde | 2 kecocokan (berisi 4 karakter) |
^
- Karpet
Simbol tanda sisipan ^
digunakan untuk memeriksa apakah string dimulai dengan karakter tertentu.
Ekspresi | String | Cocok? |
---|---|---|
^a | a | 1 pertandingan |
abc | 1 pertandingan | |
bac | Tidak cocok | |
^ab | abc | 1 pertandingan |
acb | Tidak cocok (dimulai dengan a tetapi tidak diikuti oleh b ) |
$
- Dolar
Simbol dolar $
digunakan untuk memeriksa apakah string diakhiri dengan karakter tertentu.
Ekspresi | String | Cocok? |
---|---|---|
a$ | a | 1 pertandingan |
formula | 1 pertandingan | |
cab | Tidak cocok |
*
- Bintang
Simbol bintang *
cocok dengan nol atau lebih kekerapan dari pola yang tersisa.
Ekspresi | String | Cocok? |
---|---|---|
ma*n | mn | 1 pertandingan |
man | 1 pertandingan | |
maaan | 1 pertandingan | |
main | Tidak cocok (a tidak diikuti oleh n ) | |
woman | 1 pertandingan |
+
- Plus
Simbol plus +
cocok dengan satu atau beberapa kejadian dari pola yang tersisa.
Ekspresi | String | Cocok? |
---|---|---|
ma+n | mn | Tidak cocok (tidak ada a karakter) |
man | 1 pertandingan | |
maaan | 1 pertandingan | |
main | Tidak ada yang cocok (a tidak diikuti oleh n) | |
woman | 1 pertandingan |
?
- Tanda Tanya
Simbol tanda tanya ?
cocok dengan nol atau satu kejadian dari pola yang tersisa.
Ekspresi | String | Cocok? |
---|---|---|
ma?n | mn | 1 pertandingan |
man | 1 pertandingan | |
maaan | Tidak ada yang cocok (lebih dari satu a karakter) | |
main | Tidak ada yang cocok (a tidak diikuti oleh n) | |
woman | 1 pertandingan |
{}
- Kawat Gigi
Perhatikan kode ini:{n,m}
. Ini berarti setidaknya n , dan paling banyak m pengulangan pola yang tersisa.
Ekspresi | String | Cocok? |
---|---|---|
a{2,3} | abc dat | Tidak cocok |
abc daat | 1 kecocokan (di daat ) | |
aabc daaat | 2 kecocokan (di aabc dan daaat ) | |
aabc daaaat | 2 kecocokan (di aabc dan daaaat ) |
Mari kita coba satu contoh lagi. RegEx ini [0-9]{2, 4}
cocok dengan setidaknya 2 digit tetapi tidak lebih dari 4 digit
Ekspresi | String | Cocok? |
---|---|---|
[0-9]{2,4} | ab123csde | 1 kecocokan (cocok di ab123csde ) |
12 and 345673 | 3 kecocokan (12 , 3456 , 73 ) | |
1 and 2 | Tidak cocok |
|
- Alternatif
Bilah vertikal |
digunakan untuk pergantian (or
operator).
Ekspresi | String | Cocok? |
---|---|---|
a|b | cde | Tidak cocok |
ade | 1 kecocokan (cocok di ade ) | |
acdbea | 3 kecocokan (di acdbea ) |
Di sini, a|b
cocok dengan string apa pun yang berisi a atau b
()
- Grup
Tanda kurung ()
digunakan untuk mengelompokkan sub-pola. Misalnya, (a|b|c)xz
cocok dengan string apa pun yang cocok dengan a atau b atau c diikuti oleh xz
Ekspresi | String | Cocok? |
---|---|---|
(a|b|c)xz | ab xz | Tidak cocok |
abxz | 1 kecocokan (cocok di abxz ) | |
axz cabxz | 2 kecocokan (di axzbc cabxz ) |
\
- Garis miring terbalik
Serangan balik \
digunakan untuk menghindari berbagai karakter termasuk semua metakarakter. Misalnya,
\$a
cocok jika string berisi $
diikuti oleh a
. Di sini, $
tidak ditafsirkan oleh mesin RegEx dengan cara khusus.
Jika Anda tidak yakin apakah suatu karakter memiliki arti khusus atau tidak, Anda dapat memasukkan \
di depannya. Ini memastikan karakter tidak diperlakukan dengan cara khusus.
Urutan Khusus
Urutan khusus membuat pola yang umum digunakan lebih mudah untuk ditulis. Berikut daftar urutan khusus:
\A
- Cocok jika karakter yang ditentukan berada di awal string.
Ekspresi | String | Cocok? |
---|---|---|
\Athe | the sun | Pertandingan |
In the sun | Tidak cocok |
\b
- Cocok jika karakter yang ditentukan berada di awal atau akhir kata.
Ekspresi | String | Cocok? |
---|---|---|
\bfoo | football | Pertandingan |
a football | Pertandingan | |
afootball | Tidak cocok | |
foo\b | the foo | Pertandingan |
the afoo test | Pertandingan | |
the afootest | Tidak cocok |
\B
- Berlawanan dengan \b
. Cocok jika karakter yang ditentukan tidak di awal atau akhir kata.
Ekspresi | String | Cocok? |
---|---|---|
\Bfoo | football | Tidak cocok |
a football | Tidak cocok | |
afootball | Pertandingan | |
foo\B | the foo | Tidak cocok |
the afoo test | Tidak cocok | |
the afootest | Pertandingan |
\d
- Cocok dengan angka desimal apa pun. Setara dengan [0-9]
Ekspresi | String | Cocok? |
---|---|---|
\d | 12abc3 | 3 kecocokan (di 12abc3 ) |
Python | Tidak cocok |
\D
- Cocok dengan digit non-desimal apa pun. Setara dengan [^0-9]
Ekspresi | String | Cocok? |
---|---|---|
\D | 1ab34"50 | 3 kecocokan (di 1ab34"50 ) |
1345 | Tidak cocok |
\s
- Cocok dengan string yang berisi karakter spasi apa pun. Setara dengan [ \t\n\r\f\v]
.
Ekspresi | String | Cocok? |
---|---|---|
\s | Python RegEx | 1 pertandingan |
PythonRegEx | Tidak cocok |
\S
- Cocok dengan string yang berisi karakter non-spasi. Setara dengan [^ \t\n\r\f\v]
.
Ekspresi | String | Cocok? |
---|---|---|
\S | a b | 2 kecocokan (pada a b ) |
| Tidak cocok |
\w
- Cocok dengan karakter alfanumerik (digit dan abjad). Setara dengan [a-zA-Z0-9_]
. Omong-omong, garis bawahi _
juga dianggap sebagai karakter alfanumerik.
Ekspresi | String | Cocok? |
---|---|---|
\w | 12&": ;c | 3 kecocokan (di 12&": ;c ) |
%"> ! | Tidak cocok |
\W
- Cocok dengan karakter non-alfanumerik apa pun. Setara dengan [^a-zA-Z0-9_]
Ekspresi | String | Cocok? |
---|---|---|
\W | 1a2%c | 1 kecocokan (pada 1a2%c ) |
Python | Tidak cocok |
\Z
- Cocok jika karakter yang ditentukan berada di akhir string.
Ekspresi | String | Cocok? |
---|---|---|
Python\Z | I like Python | 1 pertandingan |
I like Python Programming | Tidak cocok | |
Python is fun. | Tidak cocok |
Kiat: Untuk membangun dan menguji ekspresi reguler, Anda dapat menggunakan alat penguji RegEx seperti regex101. Alat ini tidak hanya membantu Anda dalam membuat ekspresi reguler, tetapi juga membantu Anda mempelajarinya.
Sekarang Anda memahami dasar-dasar RegEx, mari kita bahas cara menggunakan RegEx dalam kode Python Anda.
Python memiliki modul bernama re
untuk bekerja dengan ekspresi reguler. Untuk menggunakannya, kita perlu mengimpor modul.
import re
Modul ini mendefinisikan beberapa fungsi dan konstanta untuk bekerja dengan RegEx.
re.findall()
metode mengembalikan daftar string yang berisi semua kecocokan.
# Program to extract numbers from a string
import re
string = 'hello 12 hi 89. Howdy 34'
pattern = '\d+'
result = re.findall(pattern, string)
print(result)
# Output: ['12', '89', '34']
Jika pola tidak ditemukan, re.findall()
mengembalikan daftar kosong.
re.split
metode membagi string di mana ada kecocokan dan mengembalikan daftar string di mana pemisahan telah terjadi.
import re
string = 'Twelve:12 Eighty nine:89.'
pattern = '\d+'
result = re.split(pattern, string)
print(result)
# Output: ['Twelve:', ' Eighty nine:', '.']
Jika pola tidak ditemukan, re.split()
mengembalikan daftar yang berisi string asli.
Anda dapat melewati maxsplit
argumen ke re.split()
metode. Ini adalah jumlah maksimum pemisahan yang akan terjadi.
import re
string = 'Twelve:12 Eighty nine:89 Nine:9.'
pattern = '\d+'
# maxsplit = 1
# split only at the first occurrence
result = re.split(pattern, string, 1)
print(result)
# Output: ['Twelve:', ' Eighty nine:89 Nine:9.']
Omong-omong, nilai default maxsplit
adalah 0; artinya semua kemungkinan pemisahan.
Sintaks re.sub()
adalah:
re.sub(pattern, replace, string)
Metode mengembalikan string di mana kemunculan yang cocok diganti dengan konten replace variabel.
# Program to remove all whitespaces
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
# empty string
replace = ''
new_string = re.sub(pattern, replace, string)
print(new_string)
# Output: abc12de23f456
Jika pola tidak ditemukan, re.sub()
mengembalikan string asli.
Anda dapat melewati count sebagai parameter keempat ke re.sub()
metode. Jika dihilangkan, hasilnya menjadi 0. Ini akan menggantikan semua kemunculan.
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
replace = ''
new_string = re.sub(r'\s+', replace, string, 1)
print(new_string)
# Output:
# abc12de 23
# f45 6
re.subn()
mirip dengan re.sub()
kecuali ia mengembalikan tuple dari 2 item yang berisi string baru dan jumlah penggantian yang dilakukan.
# Program to remove all whitespaces
import re
# multiline string
string = 'abc 12\
de 23 \n f45 6'
# matches all whitespace characters
pattern = '\s+'
# empty string
replace = ''
new_string = re.subn(pattern, replace, string)
print(new_string)
# Output: ('abc12de23f456', 4)
re.search()
metode membutuhkan dua argumen:pola dan string. Metode ini mencari lokasi pertama di mana pola RegEx menghasilkan kecocokan dengan string.
Jika pencarian berhasil, re.search()
mengembalikan objek yang cocok; jika tidak, ia mengembalikan None
.
match = re.search(pattern, str)
import re
string = "Python is fun"
# check if 'Python' is at the beginning
match = re.search('\APython', string)
if match:
print("pattern found inside the string")
else:
print("pattern not found")
# Output: pattern found inside the string
Di sini, cocok berisi objek yang cocok.
Anda bisa mendapatkan metode dan atribut dari objek yang cocok menggunakan fungsi dir().
Beberapa metode dan atribut objek pencocokan yang umum digunakan adalah:
group()
metode mengembalikan bagian dari string yang cocok.
import re
string = '39801 356, 2102 1111'
# Three digit number followed by space followed by two digit number
pattern = '(\d{3}) (\d{2})'
# match variable contains a Match object.
match = re.search(pattern, string)
if match:
print(match.group())
else:
print("pattern not found")
# Output: 801 35
Di sini, cocok variabel berisi objek yang cocok.
Pola kami (\d{3}) (\d{2})
memiliki dua subgrup (\d{3})
dan (\d{2})
. Anda bisa mendapatkan bagian dari string subkelompok yang diberi tanda kurung ini. Begini caranya:
>>> match.group(1)
'801'
>>> match.group(2)
'35'
>>> match.group(1, 2)
('801', '35')
>>> match.groups()
('801', '35')
start()
fungsi mengembalikan indeks awal substring yang cocok. Demikian pula, end()
mengembalikan indeks akhir dari substring yang cocok.
>>> match.start()
2
>>> match.end()
8
span()
fungsi mengembalikan tuple yang berisi indeks awal dan akhir dari bagian yang cocok.
>>> match.span()
(2, 8)
re
atribut objek yang cocok mengembalikan objek ekspresi reguler. Demikian pula, string
atribut mengembalikan string yang diteruskan.
>>> match.re
re.compile('(\\d{3}) (\\d{2})')
>>> match.string
'39801 356, 2102 1111'
Kami telah membahas semua metode yang umum digunakan yang didefinisikan dalam re
modul. Jika Anda ingin mempelajari lebih lanjut, kunjungi modul Python 3.
Ketika r atau R awalan digunakan sebelum ekspresi reguler, itu berarti string mentah. Misalnya, '\n'
adalah baris baru sedangkan r'\n'
berarti dua karakter:garis miring terbalik \
diikuti oleh n
.
Serangan balik \
digunakan untuk menghindari berbagai karakter termasuk semua metakarakter. Namun, menggunakan r awalan membuat \
perlakukan sebagai karakter normal.
import re
string = '\n and \r are escape sequences.'
result = re.findall(r'[\n\r]', string)
print(result)
# Output: ['\n', '\r']
Python
Python strftime() Dalam artikel ini, Anda akan belajar mengonversi objek tanggal, waktu, dan waktu ke string yang setara (dengan bantuan contoh) Video:Tanggal dan Waktu dengan Python strftime() metode mengembalikan string yang mewakili tanggal dan waktu menggunakan objek tanggal, waktu atau datet
Python strptime() Dalam artikel ini, Anda akan belajar membuat objek datetime dari string (dengan bantuan contoh). Video:Tanggal dan Waktu dengan Python strptime() metode membuat objek datetime dari string yang diberikan. Catatan: Anda tidak dapat membuat datetime objek dari setiap string. Strin
Apa itu Ekspresi Reguler di Python? Ekspresi Reguler (RE) dalam bahasa pemrograman adalah string teks khusus yang digunakan untuk menggambarkan pola pencarian. Ini sangat berguna untuk mengekstrak informasi dari teks seperti kode, file, log, spreadsheet, atau bahkan dokumen. Saat menggunakan ekspr
Jika Anda melewatkannya:Python 2 adalah secara resmi tidak didukung mulai 1 Januari 2020 . Jika Anda masih menggunakan Python 2.7, tingkatkan sekarang . Jika Anda tidak yakin versi apa yang Anda jalankan, periksa versi Python Anda. Banyak pengelola paket telah bermigrasi ke Python 3. Beberapa mas