Maison > Article > interface Web > Explication détaillée de la recherche avant et après l'expression régulière tutoriel_expression régulière
Cet article présente principalement la recherche avant et après le didacticiel expression régulière, et analyse les techniques de mise en œuvre et les précautions des fonctions de recherche avant et de recherche arrière en fonction de problèmes spécifiques. qui en a besoin peut se référer à
Cet article explique la recherche avant et après le didacticiel sur les expressions régulières. Partagez-le avec tout le monde pour référence, comme suit :
Remarque : Dans tous les exemples, les résultats de correspondance des expressions régulières sont inclus dans le texte source [ et ], quelques exemples seront implémentés en utilisant Java. S'il s'agit de l'utilisation d'expressions régulières dans Java lui-même, cela sera expliqué à l'endroit correspondant. Tous les exemples Java sont testés sous JDK1.6.0_13.
1. Introduction au problème
Dans une page HTML, faites correspondre le texte entre une paire de balises, par exemple en faisant correspondre les balises de la page, c'est-à-dire , < Texte entre title> et :
Texte :
Expression régulière :<[Tt][Ii][Tt][Ll][Ee]>.*? [Tt][Ii][Tt][Ll][Ee ; 🎜> Analyse : <[Tt][Ii][Tt][Ll][Ee]> signifie qu'il n'est pas sensible à la casse. Ce modèle correspond à la balise de titre et au texte entre eux, mais il l'est. pas parfait Parce que nous voulons uniquement le texte entre les balises de titre, pas les balises elles-mêmes. Pour résoudre ce problème, nous devons utiliser lookaround.
2. Recherche avant La recherche avant spécifie un modèle qui doit correspondre mais qui n'est pas renvoyé dans le résultat. La recherche avant est en fait une sous-expression qui commence par ?= et le texte à rechercher suit =.
Regardez un exemple de mise en correspondance de la partie protocolaire d'une adresse URL :
Texte : http://blog.csdn.net/mhmyqn
Expression régulière : .
+(?=:)Résultat : [http]
://blog.csdn.net/mhmyqnAnalyse : La partie protocole dans l'adresse URL est la partie avant :, le modèle .+ correspond à n'importe quel texte, la sous-expression (?=:) correspond à :, mais le correspondant : n'apparaît pas dans le résultat. Nous utilisons ?= pour indiquer au moteur d'expression régulière que tant que : est trouvé, tout ira bien, mais il ne sera pas inclus dans le résultat final renvoyé. Si vous n'utilisez pas la correspondance directe (?=:) ici, mais utilisez (:) directement, alors le résultat de la correspondance sera http:, qui inclut :, ce qui n'est pas ce que nous voulons.
Remarque : La recherche recto et verso devant et derrière fait référence à la position relative entre le motif et le texte à rechercher. La gauche est le recto et la droite est le verso. Autrement dit, la recherche vers l'avant est : xxx(?=xxx), et la recherche vers l'arrière est (?<=xxx)xxx. La recherche vers l'arrière sera ensuite introduite.
3. Recherche arrièreL'opérateur de recherche arrière est ?<=. Cependant, toutes les implémentations d'expressions régulières ne prennent pas en charge la recherche arrière.
JavaScriptne la prend pas en charge. Par exemple, si vous souhaitez retrouver le prix dans le texte (commençant par $, suivi d'un chiffre), le résultat ne contient pas le symbole monétaire :
Texte : catégorie1 : 136,25 $, catégorie2 : 28 $, catégorie3 : 88,60 $Expression régulière :
(?<=$)d+(.d+)?Résultat : catégorie 1 :$ 【136,25】
,catégorie 2 :$【28】,catégorie 3 :$
【88,60】Analyse : (?<=$) Le modèle correspond à $,d+(.d+) ? Le modèle correspond à des nombres entiers ou décimaux. Comme le montrent les résultats, le résultat n’inclut pas le symbole monétaire, mais uniquement le prix. Que se passerait-il si nous n’utilisions pas la recherche en arrière ? Utilisez le modèle $d+(.d+)?, qui inclura $ dans le résultat. L'utilisation du modèle d+(.d+) fera également correspondre les nombres de la catégorie1(23), ce qui n'est pas ce que nous voulons. Remarque : la longueur du modèle de recherche avant est variable et ils peuvent contenir des métacaractères tels que ., *, + ; tandis que le modèle de recherche arrière ne peut être que de longueur fixe et ne peut pas contenir ,. *, + et autres métacaractères.
4. Combinez la recherche avant et la recherche arrièreUtilisez ensemble la recherche avant et la recherche arrière pour résoudre le problème précédent Problème avec le texte entre les balises HTML :
Texte :
Expression régulière : (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?= [Tt][Ii] [ Tt][Ll][Ee]>)
Résultat :
Analyse : Il ressort des résultats que le problème est parfaitement résolu. (?<=<[Tt][Ii][Tt][Ll][Ee]>) est une opération en arrière, qui correspond à
5. Annulez les recherches avant et arrière
La recherche avant et la recherche arrière mentionnées précédemment sont généralement utilisées pour faire correspondre le texte, et leur but est de déterminer si la position du texte du résultat correspondant qui est renvoyé (en spécifiant quel texte doit être avant et après le résultat correspondant). Cette utilisation est appelée recherche avant et recherche avant. Il existe également une recherche avant négative et une recherche arrière négative, qui trouvent le texte qui ne correspond pas à un modèle donné.
Opérateurs de recherche avant et après :
(?=) | 正向前查找 |
(?!) | 负向前查找 |
(?<=) | 正向后查找 |
(? | 负向后查找 |
Par exemple, il y a un prix dans un morceau de texte (commençant par $ , suivi d'un chiffre) et Quantité, nous devons connaître le prix et la quantité, regardons d'abord le prix :
Texte : J'ai payé 30 $ pour 10 pommes, 15 oranges et 10 poires . J'ai économisé 5$ sur cette commande.
Expression régulière : (?<=$)d+
Résultat : J'ai payé 【30 $】 pour 10 pommes, 15 oranges et 10 poires. J'ai économisé 【5 $】 sur cette commande. >Texte : J'ai payé 30 $ pour 10 pommes, 15 oranges et 10. poires. J'ai économisé 5$ sur cette commande.
Expression régulière : b(?
Résultat :I J'ai payé 30 $ pour 【10】 pommes,
【15】oranges et 【10】 poires. J'ai économisé 5 $ sur cette commande.
. Analyse : (? 6. Résumé
Avec la recherche avant et arrière, vous pouvez avoir un contrôle précis sur le contenu inclus dans le résultat final de correspondance. L'opération de recherche avant et après nous permet d'utiliser des sous-expressions pour spécifier l'emplacement où l'opération de correspondance de texte se produit et d'obtenir l'effet de correspondance uniquement mais pas de consommation.PS : Voici 2 outils d'expression régulière plus pratiques pour votre référence :
Outil de test en ligne d'expressions régulières JavaScript :
http://tools.jb51.net/regex/javascript
Outil de génération d'expressions régulières en ligne :
http://tools.jb51.net/regex/create_reg
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!