ten jest napisany w Pythonie,Python wyrażenie regularne remix, dlaczego ten kod nie działa?
import re
s='1 89059809102/30589533 IronMan 30 Santa Ana Massage table/IronMan 30 Santa Ana Massage table'
pattern='\s(\d{11})/(\d{8})'
re.match(pattern,s)
zwraca żadnej.
próbowałem biorąc wsporniki off,
pattern='\s\d{11}/\d{8}'
To wciąż powraca none
.
Moje pytania są następujące:
- Dlaczego re.match nie znajdzie niczego?
- Jaka jest różnica ze wspornikiem we wzorze lub bez niego?
@nhahtdh: ' \ s' i '\ d' nie mają znaczenia w normalnych ciągach Pythona, więc w tym konkretnym przypadku nie ma różnicy, a ukośniki odwrotne nie wymagają ucieczki. –
@MartijnPieters: Masz rację, ale nieprzetworzony ciąg jest nadal bardzo przydatny, aby usunąć zamieszanie. Inny język ma inne traktowanie dla '' \ '', po którym następuje znak, który nie tworzy sekwencji unikowej. – nhahtdh
@nhahtdh: Zgadzam się; używanie ciągów "r''' raw" do wyrażeń regularnych jest z pewnością świetnym pomysłem i jest najlepszą praktyką. Właśnie w tym przypadku OP ma szczęście i nie ma żadnej różnicy. :-) –