Saya telah menemui masalah dengan re
modul di Python 3.6.5. Saya memiliki pola ini dalam ekspresi reguler saya:
'\\nRevision: (\d+)\\n'
Tetapi ketika saya menjalankannya, saya mendapatkan file DeprecationWarning
.
Saya mencari masalahnya di SO , dan belum menemukan jawabannya, sebenarnya - apa yang harus saya gunakan \d+
? Hanya [0-9]+
atau mungkin sesuatu yang lain?
python
regex
python-3.x
mchfrnc.dll
sumber
sumber
\d
atau gunakanr'\\nRevision: (\d+)\\n'
?Jawaban:
Python 3 mengartikan literal string sebagai string Unicode, dan oleh karena itu Anda
\d
diperlakukan sebagai karakter Unicode yang lolos.Deklarasikan pola RegEx Anda sebagai string mentah sebagai gantinya dengan melakukan prapengiriman
r
, seperti di bawah ini:Ini juga berarti Anda dapat melepaskan escapes
\n
juga karena ini hanya akan diurai sebagai karakter baris baru olehre
.sumber
\d
diperlakukan sebagai urutan pelolosan yang tidak dikenali dan dibiarkan tidak berubah. DeprecationWarning diberikan sejak Python 3.6. Di beberapa versi Python yang akan datang, ini akan menjadi SyntaxError. Detail dari "2.4.1. String dan Bytes literals" di Dokumen.'\\d'
.