Nota: Examples provided are in Python.
Embora o conceito permaneça o mesmo.
'.'
é um símbolo correspondente que corresponde a qualquer caractere, exceto o caractere de nova linha (isso também pode ser substituído pelo re.DOTALL
argumento em Python). Por isso, também é chamado como curinga .
'*'
é um quantificador (define com que frequência um elemento pode ocorrer). É a abreviação de {0,} .
Significa "igualar zero ou mais" - o grupo que precede a estrela pode ocorrer várias vezes no texto. Pode estar completamente ausente ou repetido várias vezes.
'?'
também é um quantificador . É a abreviação de {0,1} .
Significa "Corresponder a zero ou a um grupo que precede esse ponto de interrogação". Também pode ser interpretado como a parte que precede o ponto de interrogação é opcional .
por exemplo:
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'
No exemplo acima '?' indica que os dois dígitos anteriores a ele são opcionais. Eles podem não ocorrer ou ocorrer no máximo uma vez.
Diferença entre '.' e '?':
'.'
corresponde / aceita / verifica qualquer caractere único para o lugar que está mantendo na expressão regular.
por exemplo:
pattern = re.compile(r'.ot')
pattern.findall('dot will identify both hot and got.')
Output: ['dot', 'hot', 'got']
'?'
corresponde / verifica a ocorrência zero ou única do grupo que a precede .
Veja o exemplo de número de celular.
O mesmo acontece com '*'
. Ele verificará zero ou mais ocorrências do grupo que a precede .
Combinação:
'.*'
: Aceita quantas sequências estiverem disponíveis. Abordagem gananciosa .
'.*?
Aceita a primeira sequência correspondente e para. Abordagem não gananciosa
Para obter mais informações, considere a leitura após duas perguntas ...