Puis-je obtenir un exemple de la différence entre ces trois éléments (sont-ils appelés métacaractères?)?
Je sais que cela *
signifie tout ou rien, mais je ne sais pas si c'est la bonne façon d'y penser. D'un autre côté .
et ?
semblent les mêmes. Ils correspondent à un personnage, non?
Réponses:
Tiré directement de Wikipedia :
La grande différence est que l'astérisque correspond à zéro ou plusieurs occurrences, tandis que le point d'interrogation correspond à zéro ou une occurrence. Comparez ces deux exemples:
Parce que dans
colouur
la lettre u (l'élément précédent avant le qualificatif?
) s'est produit plus d'une fois, il n'est pas associé à?
, mais il est associé à*
Exemple similaire:
De la même page wikipedia:
Dans notre exemple,
De façon appropriée, le dernier se lit comme suit:
match any line that has "colou", plus any character, plus letter "r"
Conclusion
Vous avez demandé: "Je sais que" * "signifie tout ou rien, mais je ne sais pas si c'est la bonne façon d'y penser. De l'autre". " & '?' semblent identiques. " Comme vous pouvez le voir, le point et l'astérisque ne sont pas exactement les mêmes. Le point opère sur n'importe quel caractère qui peut occuper cette position spécifique, tandis que le point d'interrogation opère sur l'élément précédent.
la source
Vous pouvez confondre les expressions régulières avec les globes shell
Dans une expression régulière, la syntaxe
.
représente n'importe quel caractère unique (généralement à l'exclusion du caractère de nouvelle ligne), tandis*
qu'un quantificateur signifie zéro ou plus de l'atome d' expression régulière précédent (caractère ou groupe).?
est un quantificateur signifiant zéro ou une instance de l'atome précédent, ou (dans les variantes d'expression régulière qui le prennent en charge) un modificateur qui définit le comportement du quantificateur sur non gourmand.Dans les globes shell,
?
représente un seul caractère (comme les regex.
) tandis que*
représente une séquence de zéro ou plusieurs caractères (équivalent à regex.*
).Quelques références que vous pouvez trouver utiles sont http://www.regular-expressions.info/quickstart.html et http://mywiki.wooledge.org/glob
la source
Remarque: bien
Examples provided are in Python.
que le concept reste le même.'.'
est un symbole correspondant qui correspond à n'importe quel caractère à l'exception du caractère de nouvelle ligne (cela peut également être remplacé par unre.DOTALL
argument en Python). Par conséquent, il est également appelé Wildcard .'*'
est un quantificateur (définit la fréquence à laquelle un élément peut se produire). Est l'abréviation de {0,} .Cela signifie «correspondre à zéro ou plus» - le groupe qui précède l'étoile peut apparaître un certain nombre de fois dans le texte. Il peut être complètement absent ou répété encore et encore.
'?'
est également un quantificateur . Est l'abréviation de {0,1} .Cela signifie «Correspond à zéro ou à l'un des groupes précédant ce point d'interrogation». Il peut également être interprété comme la partie précédant le point d'interrogation est facultative .
par exemple:
Dans l'exemple ci-dessus '?' indique que les deux chiffres qui le précèdent sont facultatifs. Ils peuvent ne pas se produire ou se produire au maximum une fois.
Différence entre '.' et '?':
'.'
correspond / accepte / vérifie tout caractère unique pour la place qu'il tient dans l'expression régulière.par exemple:
'?'
correspond / vérifie l'occurrence nulle ou unique du groupe qui le précède .Consultez l'exemple de numéro de mobile.
Il en va de même
'*'
. Il vérifiera zéro ou plusieurs occurrences du groupe qui le précède .Combinaison:
'.*'
: Accepte autant de séquences que disponibles. Approche gourmande .'.*?
'Accepte la première séquence correspondante et s'arrête. Approche non gourmandePour plus d'informations, pensez à lire les deux questions suivantes ...
la source