Bir bayrak Python re.sub tüm oluşumları yerine geçmez

oy
41

Python dokümanlar ki:

re.MULTILINE: Belirtilen zaman, desen karakteri '^' Varsayılan olarak ... (hemen her yeni satır aşağıdaki) dize başında ve her satırın başında maçları, '^' sadece dize başında maçları ...

Yani ne aşağıdaki beklenmeyen bir sonuç olsun oluyor?

>>> import re
>>> s = // The quick brown fox.
... // Jumped over the lazy dog.
>>> re.sub('^//', '', s, re.MULTILINE)
' The quick brown fox.\n// Jumped over the lazy dog.'
Oluştur 03/09/2008 saat 20:00
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
95

Tanımına bak re.sub:

sub(pattern, repl, string[, count])

4 argüman kullandığınız, sayısıdır re.MULTILINE(ki 8'dir) sayısı olarak değil, bir bayrak olarak.

Eğer bayrakları kullanmak isterseniz sizin regex derlemek gerekiyor.

re.sub(re.compile('^//', re.MULTILINE), '', s)

Bir flagstam tanımı artık nedenle argüman, Python 2.7 eklenmiştir:

re.sub(pattern, repl, string[, count, flags])

Hangi anlamına gelir:

re.sub('^//', '', s, flags=re.MULTILINE)

Eserleri.

Cevap 03/09/2008 saat 20:08
kaynak kullanıcı

oy
8
re.sub('(?m)^//', '', s)
Cevap 25/03/2010 saat 15:10
kaynak kullanıcı

oy
6

Tam tanımı re.subgeçerli:

re.sub(pattern, repl, string[, count, flags])

Hangi parametreler nelerdir Python anlatırsan, o zaman geçmesi anlamına gelir flagsgeçen olmadan count:

re.sub('^//', '', s, flags=re.MULTILINE)

veya daha kısaca:

re.sub('^//', '', s, flags=re.M)
Cevap 30/08/2011 saat 17:33
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more