Примітка. Examples provided are in Python.
Хоча концепція залишається такою ж.
'.'
є відповідним символом, який відповідає будь-якому символу, за винятком символу нової лінії (це теж може бути замінено re.DOTALL
аргументом у Python). Звідси його ще називають Wildcard .
'*'
є кількісним показником (визначає, як часто може виникати елемент). Короткий для {0,} .
Це означає "відповідати нулю або більше" - група, яка передує зірці, може виникати будь-яку кількість разів у тексті. Він може бути повністю відсутнім або повторюватися знову і знову.
'?'
також є кількісним показником . Короткий для {0,1} .
Це означає "Зрівняти нуль або одну з групи, що передує цьому знаку питання". Він також може бути інтерпретований як частина, що передує знаку питання, необов'язкова .
наприклад:
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'
У наведеному вище прикладі "?" вказує на те, що дві цифри, що передують їй, є необов'язковими. Вони можуть не виникати або виникати не більше одного разу.
Різниця між '.' і "?":
'.'
відповідає / приймає / перевіряє будь-який окремий символ для місця, яке він займає у звичайному виразі.
наприклад:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
відповідає / перевіряє нуль або одиночне виникнення групи, що передує їй .
Перевірте приклад мобільного номера.
Те саме стосується '*'
. Він перевірить нуль або більше випадків групи, що передує йому .
Поєднання:
'.*'
: Приймає скільки завгодно послідовностей. Жадібний підхід .
'.*?
'Приймає першу відповідну послідовність і зупиняється. Нежадний підхід
Для отримання додаткової інформації розгляньте наступні два питання ...