Kembalikan string dengan semua non-alfanumerik dengan garis miring terbalik; ini berguna jika Anda ingin mencocokkan string literal arbitrer yang mungkin memiliki karakter meta ekspresi reguler di dalamnya.
Pada Python 3.7 re.escape()telah diubah untuk menghindari hanya karakter yang berarti untuk operasi regex.
Dalam pola pencarian , sertakan \serta karakter yang Anda cari. Anda akan menggunakan \untuk melarikan diri karakter Anda, sehingga Anda perlu untuk melarikan diri
yang juga.
Letakkan tanda kurung di sekitar pola pencarian , misalnya ([\"]), sehingga
pola substitusi dapat menggunakan karakter yang ditemukan saat ditambahkan \di depannya. (Itulah
\1fungsinya: menggunakan nilai dari grup dalam tanda kurung pertama.)
Di rdepan r'([\"])'berarti itu adalah string mentah . String mentah menggunakan aturan berbeda untuk menghindari garis miring terbalik. Untuk menulis ([\"])sebagai string biasa, Anda perlu menggandakan semua garis miring terbalik dan menulis '([\\"])'. String mentah lebih ramah saat Anda menulis ekspresi reguler.
Dalam pola substitusi , Anda perlu melepaskan diri \untuk membedakannya dari garis miring terbalik yang mendahului grup substitusi, misalnya \1, karenanya r'\\\1'. Untuk menulis
bahwa sebagai string biasa, Anda akan perlu '\\\\\\1'- dan tak seorang pun ingin itu.
Gunakan repr () [1: -1]. Dalam kasus ini, tanda kutip ganda tidak perlu di-escape. Potongan [-1: 1] digunakan untuk menghapus kutipan tunggal dari awal dan akhir.
>>> x = raw_input()
I'm "stuck" :\
>>> print x
I'm "stuck":\
>>>print repr(x)[1:-1]
I\'m "stuck":\\
Atau mungkin Anda hanya ingin melepaskan frasa untuk ditempelkan ke program Anda? Jika ya, lakukan ini:
Itu tidak berfungsi jika stringnya adalah unicode, karena Anda akan memiliki u dan harus menjalankanrepr(x)[2:-1]
Antoine Pelisse
Di python3.4, di mana semua string adalah unicode, sayangnya ini tampaknya tidak berfungsi sama sekali. Sebagai gantinya, print(repr("I'm stuck")[1:-1])cetak I'm stuck.
dantiston
3
Seperti yang telah disebutkan di atas, jawabannya tergantung pada kasus Anda. Jika Anda ingin meng-escape string untuk ekspresi reguler maka Anda harus menggunakan re.escape (). Tetapi jika Anda ingin keluar dari sekumpulan karakter tertentu, gunakan fungsi lambda ini:
>>> escape =lambda s, escapechar, specialchars:"".join(escapechar + c if c in specialchars or c == escapechar else c for c in s)>>> s = raw_input()
I'm "stuck" :\
>>> print s
I'm "stuck":\
>>>print escape(s,"\\",['"'])
I'm \"stuck\" :\\
Jawaban:
Menggunakan
re.escape
Ulangi di sini:
Pada Python 3.7
re.escape()
telah diubah untuk menghindari hanya karakter yang berarti untuk operasi regex.sumber
regex.escape(pattern,string,special_only=True
Saya terkejut tidak ada yang menyebutkan menggunakan ekspresi reguler melalui
re.sub()
:Hal penting yang perlu diperhatikan:
\
serta karakter yang Anda cari. Anda akan menggunakan\
untuk melarikan diri karakter Anda, sehingga Anda perlu untuk melarikan diri yang juga.([\"])
, sehingga pola substitusi dapat menggunakan karakter yang ditemukan saat ditambahkan\
di depannya. (Itulah\1
fungsinya: menggunakan nilai dari grup dalam tanda kurung pertama.)r
depanr'([\"])'
berarti itu adalah string mentah . String mentah menggunakan aturan berbeda untuk menghindari garis miring terbalik. Untuk menulis([\"])
sebagai string biasa, Anda perlu menggandakan semua garis miring terbalik dan menulis'([\\"])'
. String mentah lebih ramah saat Anda menulis ekspresi reguler.\
untuk membedakannya dari garis miring terbalik yang mendahului grup substitusi, misalnya\1
, karenanyar'\\\1'
. Untuk menulis bahwa sebagai string biasa, Anda akan perlu'\\\\\\1'
- dan tak seorang pun ingin itu.sumber
Gunakan repr () [1: -1]. Dalam kasus ini, tanda kutip ganda tidak perlu di-escape. Potongan [-1: 1] digunakan untuk menghapus kutipan tunggal dari awal dan akhir.
Atau mungkin Anda hanya ingin melepaskan frasa untuk ditempelkan ke program Anda? Jika ya, lakukan ini:
sumber
repr(x)[2:-1]
print(repr("I'm stuck")[1:-1])
cetakI'm stuck
.Seperti yang telah disebutkan di atas, jawabannya tergantung pada kasus Anda. Jika Anda ingin meng-escape string untuk ekspresi reguler maka Anda harus menggunakan re.escape (). Tetapi jika Anda ingin keluar dari sekumpulan karakter tertentu, gunakan fungsi lambda ini:
sumber
Tidak sesulit itu:
sumber
characters
itu sebaiknya menjadi yang pertama!Jika Anda hanya ingin mengganti beberapa karakter, Anda dapat menggunakan ini:
sumber