Question

J'ai travaillé pendant 5 ans principalement dans des applications de bureau Java accédant aux bases de données Oracle et je n'ai jamais utilisé d'expressions régulières.Maintenant, j'entre dans Stack Overflow et je vois beaucoup de questions à leur sujet ;J'ai l'impression d'avoir raté quelque chose.

Pour quoi utilisez-vous les expressions régulières ?

P.S.Désolé pour mon mauvais anglais

Était-ce utile?

La solution

Prenons un exemple en Ruby :

puts "Matched!" unless /\d{3}-\d{4}/.match("555-1234").nil?
puts "Didn't match!" if /\d{3}-\d{4}/.match("Not phone number").nil?

Le "/\d{3}-\d{4}/" est l'expression régulière et, comme vous pouvez le voir, c'est une manière TRÈS concise de trouver une correspondance dans une chaîne.

De plus, en utilisant des groupes, vous pouvez extraire des informations, telles que :

match = /([^@]*)@(.*)/.match("myaddress@domain.com")
name = match[1]
domain = match[2]

Ici, les parenthèses dans l'expression régulière marquent un groupe de capture, afin que vous puissiez voir exactement QUELLES sont les données que vous avez mises en correspondance, afin que vous puissiez effectuer un traitement ultérieur.

Ce n'est que la pointe de l'iceberg...il y a beaucoup de choses différentes que vous pouvez faire dans une expression régulière qui rend le traitement du texte VRAIMENT facile.

Autres conseils

Les expressions régulières (ou Regex) sont utilisées pour faire correspondre des modèles dans des chaînes.Vous pouvez ainsi extraire toutes les adresses e-mail d'un morceau de texte car celui-ci suit un modèle spécifique.

Dans certains cas, les expressions régulières sont entourées de barres obliques et après la deuxième barre oblique sont placées des options telles que l'insensibilité à la casse.En voilà une bonne :)

/(bb|[^b]{2})/i

Parlé, il peut lire « 2 be or not 2 be ».

La première partie est les (supports), ils sont divisés par le tuyau | Caractère qui équivaut à une instruction OR donc (a | b) correspond à "A" ou "B".La première moitié de la zone canalisée correspond à "bb".Le nom de la seconde moitié, je ne sais pas mais ce sont les crochets, ils correspondent à tout ce qui est pas "b", c'est pourquoi il y a là un symbole de toit (terme technique).Les parenthèses ondulées correspondent à un nombre d'éléments qui les précèdent, dans ce cas, deux caractères qui ne sont pas "b".

Après le deuxième / se trouve un "i", ce qui le rend insensible à la casse.L'utilisation des barres obliques de début et de fin est spécifique à l'environnement, parfois vous le faites et parfois non.

Deux liens qui, je pense, vous seront utiles pour cela sont

  1. expressions-régulières.info
  2. Wikipédia - Expression régulière

L'expression régulière la plus cool jamais:

/^1?$|^(11+?)\1+$/

Il teste si un nombre est premier.Et il fonctionne!!

N.B. :pour que cela fonctionne, un peu de configuration est nécessaire ;le nombre que nous voulons tester doit être converti en une chaîne de «1" est le premier, alors nous pouvons appliquer l'expression pour tester si la chaîne le fait pas contenir un nombre premier de "1"s :

def is_prime(n)
  str = "1" * n
  return str !~ /^1?$|^(11+?)\1+$/ 
end

Il y a une explication détaillée et très accessible sur Le blog d'Avinash Meetoo.

Si vous souhaitez en savoir plus sur les expressions régulières, je vous recommande Maîtriser les expressions régulières.Cela va des concepts les plus basiques jusqu'à la façon dont les différents moteurs fonctionnent en dessous.Les 4 derniers chapitres donnent également un chapitre dédié à chacun de PHP, .Net, Perl et Java.J'en ai beaucoup appris et je l'utilise toujours comme référence.

Si vous débutez avec les expressions régulières, je vous recommande chaleureusement un outil comme The Regex Coach :

http://www.weitz.de/regex-coach/

J'ai également entendu de bonnes choses à propos de RegexBuddy :

http://www.regexbuddy.com/

Comme vous le savez peut-être, Oracle propose désormais des expressions régulières : http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt1.html.J'ai utilisé la nouvelle fonctionnalité dans quelques requêtes, mais elle n'a pas été aussi utile que dans d'autres contextes.La raison, je crois, est que les expressions régulières sont les mieux adaptées pour trouver des données structurées enfouies dans des données non structurées.

Par exemple, je pourrais utiliser une expression régulière pour rechercher les messages Oracle stockés dans le fichier journal.Il n'est pas possible de savoir où se trouvent les messages, mais seulement à quoi ils ressemblent.Une expression régulière est donc la meilleure solution à ce problème.Lorsque vous travaillez avec une base de données relationnelle, les données sont généralement préstructurées, donc une expression régulière ne brille pas dans ce contexte.

Une expression régulière (regex ou regexp en abrégé) est une chaîne de texte spéciale permettant de décrire un modèle de recherche.Vous pouvez considérer les expressions régulières comme des caractères génériques sous stéroïdes.Vous connaissez probablement les notations génériques telles que *.txt pour trouver tous les fichiers texte dans un gestionnaire de fichiers.L'équivalent de l'expression régulière est .*\.txt$.

Une excellente ressource pour les expressions régulières : http://www.regular-expressions.info

Ces RE sont spécifiques à Visual Studio et C++ mais je les ai parfois trouvés utiles :

Recherchez toutes les occurrences de "routineName" avec des paramètres autres que ceux par défaut transmis :

Nom_routine\(:a+\)

Inversement, pour rechercher toutes les occurrences de "routineName" avec uniquement les valeurs par défaut : Nom de la routine\(\)

Pour rechercher le code activé (ou désactivé) dans une version de débogage :

\#si._DÉBOGUER*

Notez que cela capturera toutes les variantes :ifdef, si défini, ifndef, si !défini

Valider des mots de passe forts:

Celui-ci validera un mot de passe d'une longueur de 5 à 10 caractères alphanumériques, avec au moins une majuscule, une minuscule et un chiffre :

^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{5,10}$
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top