Oleh kerana maksud * dalam r'(d*)' ialah untuk memadankan 0 atau lebih, ia tidak boleh memadankan mana-mana aksara. Gunakan re.search untuk mula memadankan dari permulaan rentetan Kerana aksara pertama 'thenextnothingis123456' bukan nombor, ia tidak boleh dipadankan, tetapi r'(d*)' tidak boleh memadankan sebarang aksara, jadi rentetan kosong. dikembalikan.
Dan r'(d+)' memerlukan pemadanan 1 hingga berbilang nombor Apabila digunakan untuk memadankan 'thenextnothingis123456', didapati bahawa aksara pertama bukan huruf, dan ia akan terus mencuba aksara kedua sehingga aksara 1 bermula. . Nombor, jadi "123456" anda boleh melihatnya dengan melihat output di bawah.
>>> import re
>>> text = 'thenextnothingis123456'
>>> p = re.search(r'(\d*)', text)
>>> p.start()
0
>>> p.end()
0
>>> p.groups()
('',)
>>> p = re.search(r'(\d+)', text)
>>> p.start()
16
>>> p.end()
22
>>> p.groups()
('123456',)
Saya merasakan ia sebenarnya telah dipadankan, iaitu bilangan 0 kali: .group(0) anda tidak melaporkan ralat nonetype, menunjukkan bahawa perlawanan itu berjaya
Oleh kerana maksud * dalam r'(d*)' ialah untuk memadankan 0 atau lebih, ia tidak boleh memadankan mana-mana aksara. Gunakan re.search untuk mula memadankan dari permulaan rentetan Kerana aksara pertama 'thenextnothingis123456' bukan nombor, ia tidak boleh dipadankan, tetapi r'(d*)' tidak boleh memadankan sebarang aksara, jadi rentetan kosong. dikembalikan.
Dan r'(d+)' memerlukan pemadanan 1 hingga berbilang nombor Apabila digunakan untuk memadankan 'thenextnothingis123456', didapati bahawa aksara pertama bukan huruf, dan ia akan terus mencuba aksara kedua sehingga aksara 1 bermula. . Nombor, jadi "123456" anda boleh melihatnya dengan melihat output di bawah.
Mengapa kod ini tidak sepadan dengan nombor?
Saya merasakan ia sebenarnya telah dipadankan, iaitu bilangan 0 kali: .group(0) anda tidak melaporkan ralat nonetype, menunjukkan bahawa perlawanan itu berjaya
Tutorial pengenalan 30 minit tentang ungkapan biasa
11111111 Hasil ayat ini kosong kerana re.search menggunakan #######2222222
Anda mencuba d, dan * bermaksud 0 atau lebih kali