Примечание: 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']
'?'
соответствует / проверяет нулевое или единичное вхождение группы, предшествующей ему .
Проверьте пример номера мобильного телефона.
То же самое и с '*'
. Он проверит ноль или более вхождений группы, предшествующей ему .
Комбинация:
'.*'
: Принимает столько последовательностей, сколько доступно. Жадный подход .
'.*?
«Принимает первую согласованную последовательность и останавливается. Нежадный подход
Для получения дополнительной информации, прочитайте следующие два вопроса ...