Znalazłem to w 123
, \d
pasuje 1
i 3
ale nie 2
. Zastanawiałem się, czy \d
pasuje do cyfry spełniającej jakie wymagania? Mówię o wyrażeniu regularnym w stylu Pythona.
Wtyczka wyrażeń regularnych w Gedit używa wyrażenia regularnego w stylu Pythona. Utworzyłem plik tekstowy z zawartością
123
Tylko 1
i 3
są dopasowywane przez wyrażenie regularne \d
; 2
nie jest.
Generalnie w przypadku sekwencji cyfr bez innych znaków pomiędzy nimi, tylko nieparzyste cyfry kolejności są zgodne, a parzyste cyfry nie są. Na przykład w 12345
, mecze są 1
, 3
i 5
.
\d
będzie pasować1
,2
a3
. Jeśli tak nie jest, twoje wyrażenie musi zawierać coś innego. Czy możesz pokazać swoją pełną ekspresję?\d
jest skrótem[0-9]
, więc powinno pasować2
. Prześlij kompletny przypadek testowy (skrypt, który można uruchomić i który demonstruje Twój problem), a może uda nam się dowiedzieć, co jest nie tak.11111
i22222
.Odpowiedzi:
[0-9]
nie zawsze jest równoważne do\d
. W pythonie3[0-9]
dopasowuje tylko0123456789
znaki, podczas gdy\d
dopasowuje[0-9]
i inne znaki cyfrowe, na przykład cyfry wschodnioarabskie٠١٢٣٤٥٦٧٨٩
.źródło
import re, re.match(r'\d', '٠١٢٣٤٥٦٧٨٩')
pokazuje brak dopasowaniaPython
i\d
pasuje do wszystkich cyfr Unicode tylko w Pythonie3. W Pythonie 2.7 jest to wciąż stary ASCII[0-9]
- warto byłoby to wyjaśnić w odpowiedzi. :)\d
dopasowuje dowolną pojedynczą cyfrę w większości stylów gramatycznych wyrażeń regularnych, w tym w Pythonie. Regex Referenceźródło
W wyrażeniu regularnym w stylu Pythona
\d
dopasowuje każdą pojedynczą cyfrę. Jeśli widzisz coś, co wydaje się tego nie robić, podaj pełne wyrażenie regularne, którego używasz, zamiast opisywania tylko tego jednego symbolu.źródło
123
.\\d{3}
pasuje do dowolnej sekwencji trzech cyfr w języku Java.źródło
\\d+
To tylko przypuszczenie, ale myślę, że twój edytor faktycznie dopasowuje każdą pojedynczą cyfrę -
1
2
3
- ale podświetlane są tylko nieparzyste dopasowania, aby odróżnić je od przypadku, gdy całość123
dopasowany jest ciąg.Większość konsol regex wyróżnia ciągłe dopasowania różnymi kolorami, ale ze względu na ustawienia wtyczek, ograniczenia terminala lub z jakiegoś innego powodu, w twoim przypadku może być podświetlona tylko każda inna grupa.
źródło
Informacje dotyczące .NET / C #:
Informacje: https://docs.microsoft.com/en-us/dotnet/standard/base-types/character-classes-in-regular-expressions#decimal-digit-character-d
źródło