Maison  >  Article  >  interface Web  >  Explication détaillée de la référence arrière des expressions régulières_expressions régulières

Explication détaillée de la référence arrière des expressions régulières_expressions régulières

微波
微波original
2017-06-28 13:49:301590parcourir

Cet article présente principalement l'Expression régulièreTutoriel d'apprentissage BackreferenceRéférencebackreference, et analyse en détail le concept, la fonction et les compétences de mise en œuvre de la backreference sous forme d'exemples. Vous pouvez vous référer à ce qui suit

Les exemples de cet article décrivent la référence arrière de l'expression régulière. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Dans tous les exemples, les résultats de correspondance des expressions régulières sont inclus entre [et] dans le texte source. Certains exemples seront implémentés en utilisant Java. .Si c'est l'utilisation des expressions régulières dans Java lui-même, qui sera expliquée à l'endroit correspondant. Tous les exemples Java sont testés sous JDK1.6.0_13.

1. Introduction du problème

Un problème de correspondance des balises de titre (H1-H6) dans les pages HTML :

Texte :

<body>
<h1>Welcome to my page</H1>
Content is pided into twosections:<br>
<h2>Introduction</h2>
Information about me.
<H2>Hobby</H2>
Information about my hobby.
<h2>This is invalid HTML</h3>
</body>

Expression régulière : bec64cdfd3b18ddf17d11124d921cd9d.*?c0d08c9e09935101747a568bd8607d7d

Résultat :

6c04bd5ca3fcae76e30b72ad730ca86d
【4a249f0d628e2318394fd9b75b4636b1Bienvenue sur ma page921186cad5e55f1481a45fdcd6c30f6e】
Le contenu est divisé en deux sections :0c6dc11e160d3b678d68754cc175188a 🎜>
【c1a436a314ed609750bd7c7d319db4daIntroduction2e9b454fa8428549ca2e64dfac4625cd】
Informations sur moi.

【1b7994ba0f794e1b49742a6367e9e0c6Hobbyebe8950f0835d9653ff486769499854f】
Informations à propos de mon passe-temps. [1-6]> correspond à la balise d'ouverture de n'importe quel titre de premier niveau et n'est pas sensible à la casse. Dans cet exemple, il correspond à 4a249f0d628e2318394fd9b75b4636b1, c1a436a314ed609750bd7c7d319db4da, 97917a8df07a7fc52e0ec945e76d81bf Correspond à 473f0a7621bec819994bb5020d29372a, 2e9b454fa8428549ca2e64dfac4625cd, 39528cedfa926ea0c01e69ef5b2ea9b0 ; ici, le métacaractère paresseux

est utilisé pour faire correspondre le texte dans la balise, sinon il le fera correspondre au premier Le contenu entre la balise d'ouverture et la dernière balise de fermeture. Mais les résultats montrent qu'une balise non valide correspond également, c'est-à-dire c1a436a314ed609750bd7c7d319db4da39528cedfa926ea0c01e69ef5b2ea9b0, et qu'elles ne peuvent pas du tout être mises en correspondance. Pour résoudre ce problème, vous devez utiliser la référence arrière.
2. Correspondance de référence arrière

La référence arrière signifie que la seconde moitié du motif fait référence à la sous-expression définie dans la première moitié.

Quant à l'utilisation, à la division et à la référence des sous-expressions, elles ont déjà été introduites. Résolvons maintenant l'exemple précédent :

Texte :

Expression régulière : 2b0cba08e60dd5488139acd8c53df8f7.*?39befa42081ca1d8f189676913a49ab1

Résultat :

<body>
<h1>Welcome to my page</H1>
Content is pided into twosections:<br>
<h2>Introduction</h2>
Information about me.
<H2>Hobby</H2>
Information about my hobby.
<h2>This is invalid HTML</h3>
</body>
6c04bd5ca3fcae76e30b72ad730ca86d

【4a249f0d628e2318394fd9b75b4636b1Bienvenue sur ma page921186cad5e55f1481a45fdcd6c30f6e】

Le contenu est divisé en deux sections :0c6dc11e160d3b678d68754cc175188a

【c1a436a314ed609750bd7c7d319db4daIntroduction2e9b454fa8428549ca2e64dfac4625cd】


Informations sur moi.

Informations sur mon passe-temps.c1a436a314ed609750bd7c7d319db4daCeci n'est pas valide HTML39528cedfa926ea0c01e69ef5b2ea9b0
Analyse : faites d'abord correspondre le motif de la balise de titre d'ouverture< ; [hH]([1-6])>, utilisez des crochets pour traiter [1-6] comme une sous-expression, et le modèle de balise de titre de fin correspondant est ff4eb78c321859eb74ed45e91b2e966e, où 1 signifie faire référence au premier Sous-expression, c'est-à-dire ([1-6]). Si ([1-6]) correspond à 1, alors 1 correspond également à 1. S'il correspond à 2, alors 1 correspond également à 2, donc le dernier n'est pas valide. la balise ne sera pas mise en correspondance.

PS : Voici 2 outils d'expression régulière plus pratiques pour votre référence :

JavaScriptOutil de test en ligne d'expressions régulières :

http://tools.jb51.net/regex/javascriptOutil 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn