/ / Quelle est cette expression régulière à la recherche de [closed] - php, regex, preg-match

Quelle est cette expression régulière à la recherche de [fermé] - php, regex, preg-match

preg_match ("/[-_^%&().A-Z0-9]/", $file)

À en juger, je peux voir que la queueest tout ce qui est A-Z et 0-9, mais pas sûr pour le début. Parce que ^ n'est pas échappé, il pourrait donc s'agir d'un "^" littéral ou être évalué à un NON, et il en va de même pour "." Donc je suis un peu confus. Avoir des choses dans l'option [] signifie-t-il que les choses sont littérales?

Réponses:

3 pour la réponse № 1

Il recherche simplement l'un des caractères de la classe de caractères. C'est à dire. un des:

  • Trait d'union, trait de soulignement, caret, pourcentage, esperant, parenthèses
  • Lettres majuscules latines
  • chiffres arabes

^ n’est interprété comme une négation d’une classe de caractères qu’au tout début de la classe. . perd sa signification particulière à l'intérieur du caractèrecours complètement. Donc, oui, dans les classes de caractères, de nombreux caractères regex spéciaux sont utilisés littéralement. À quelques exceptions près, bien que la liste suivante ne soit pas exhaustive:

  • Trait d'union moins (-) indique une plage entre deux autres caractères (c'est-à-dire pas au début ni à la fin).
  • Le caret (^) comme détaillé ci-dessus.
  • Classes de caractères prédéfinies (par exemple w) peut également être utilisé, ce qui formera une union avec les personnages de cette classe. Donc, votre classe de personnage pourrait être réduite à [-^%&().w].

2 pour la réponse № 2

^ a seulement une signification spéciale à l'intérieur [] si c'est le premier personnage.
- a seulement une signification spéciale à l'intérieur [] si c'est entre deux caractères littéraux.
., ( et ) ne pas avoir une signification particulière à l'intérieur [].

Il suffit de lire les informations de base dans le docs vous dirais tout cela.

La regex correspond à l'un des personnages de la classe.