W moim kodzie Python chcę wzorować dopasować ciąg dla co najmniej dwóch kolejnych alfabetów w dowolnym miejscu w ciągu.

Użyłem, re.match(r'([a-zA-Z][a-zA-Z])+',str)

Dopasowuje to łańcuch na przykład "ABC" , ale nie pasuje do '1ABC' . Jaki jest błąd w moim regex?

Proszę o pomoc

0
Kris 14 listopad 2011, 16:45

3 odpowiedzi

Najlepsza odpowiedź

Metoda match wygląda tylko z początku ciągów. Zamiast tego powinieneś użyć search.

Również Twój Regex jest zbudowany tak, aby pasował do równej ilości znaków.

re.search(r'([a-zA-Z][a-zA-Z]+)',str)
2
Yossi 14 listopad 2011, 12:52

Nie do końca rozumiem, czego chcesz, ale z jednego przykładu można zobaczyć, że błędnie zinterpretowałeś, co robi Re.match. Patrz Wyszukiwanie () vs. Match () z Docs On Python's ponownie moduł.

2
rplnt 14 listopad 2011, 12:50

Aby odpowiedzieć na zaktualizowane pytanie:

re.search(r'[a-zA-Z]{2,}', str)

Lub po prostu tak, jeśli chcesz wszystkie znaki alfanumeryczne (w tym podkreślenia):

re.search(r'\w{2,}', str)

Dopasować naprawdę tylko alfanumeryczne:

re.search(r'[a-zA-Z0-9]{2,}', str)

re.search może pomóc Ci, jeśli spodziewasz się, że dopasowanie będzie w dowolnym miejscu w ciągu, a nie na początku.

2
jro 14 listopad 2011, 13:03