Uwaga: Examples provided are in Python.
Choć koncepcja pozostaje taka sama.
'.'
jest pasującym symbolem, który pasuje do dowolnego znaku z wyjątkiem znaku nowej linii (to też można zastąpić re.DOTALL
argumentem w Pythonie). Dlatego jest również nazywany symbolem wieloznacznym .
'*'
jest kwantyfikatorem (określa, jak często może wystąpić element). Jest skrótem od {0,} .
Oznacza „dopasuj zero lub więcej” - grupa poprzedzająca gwiazdę może występować dowolną liczbę razy w tekście. Może być całkowicie nieobecny lub powtarzany w kółko.
'?'
jest także kwantyfikatorem . Jest skrótem od {0,1} .
Oznacza to „Dopasuj zero lub jedną z grup poprzedzających ten znak zapytania”. Można to również zinterpretować, ponieważ część poprzedzająca znak zapytania jest opcjonalna .
na przykład:
pattern = re.compile(r'(\d{2}-)?\d{10}')
mobile1 = pattern.search('My number is 91-9999988888')
mobile1.group()
Output: '91-9999988888'
mobile2 = pattern.search('My number is 9999988888')
mobile2.group()
Output: '9999988888'
W powyższym przykładzie „?” oznacza, że dwie poprzedzające ją cyfry są opcjonalne. Mogą się nie pojawić lub wystąpić jednorazowo.
Różnica pomiędzy '.' i '?':
'.'
dopasowuje / akceptuje / weryfikuje dowolny pojedynczy znak dla miejsca, które zajmuje w wyrażeniu regularnym.
na przykład:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
dopasowuje / weryfikuje zerowe lub pojedyncze wystąpienie grupy poprzedzającej .
Sprawdź przykład numeru telefonu komórkowego.
To samo dotyczy '*'
. Sprawdza zero lub więcej wystąpień grupy poprzedzającej .
Połączenie:
'.*'
: Akceptuje tyle sekwencji, ile jest dostępnych. Chciwe podejście .
'.*?
„Akceptuje pierwszą dopasowaną sekwencję i zatrzymuje się. Nie chciwe podejście
Aby uzyskać więcej informacji, przeczytaj poniższe dwa pytania ...