Je tente d'extraire l'identifiant d'un élément d'un sélecteur. Par exemple, si j'ai le sélecteur suivant voir ici pour un exemple de mon problème: https://regex101.com/r/7rk6al/ 2 p>
Pouvez-vous suggérer comment je modifierai mon regex pour atteindre mon objectif de simplement obtenir l'identifiant du sélecteur et non le corps .foo #bar code> Je souhaite extraire le texte #bar code>. Et pour #foo: survol code> Je souhaite extraire #foo code>. J'ai créé une expression régulière qui fonctionne pour tous les cas sauf pour les sélecteurs contenant : code>, il ne fonctionne donc pas pour mon dernier exemple #foo: survol code>. Il semble être gourmand et attrape tout texte #foo: survol code> au lieu de #foo code> p>
: plancher code> partie? p>
3 Réponses :
Ceci est dû à vous à l'aide du . * code> sélecteur pour votre identifiant. Il ne cesse pas de s'arrêter au côlon. Ce que vous pourriez faire est de remplacer ce sélecteur avec un ( [a-za-z0-9 \ -_.] Code>, REF ). (#[a-zA-Z0-9_\-.]*)(?:[:|\s]{1})
On dirait que cela fonctionne, si quelqu'un connaît une meilleure solution s'il vous plaît faites le moi savoir: P>
/ (#. *?) (: | \ s) / GMI P> blockQuote>
La réponse acceptée n'est pas 100% correcte. Nous pouvons commencer les identifiants avec intergers: jsfiddle.net/bvge2uwd/1 .. Lié:
Un identifiant doit commencer par une lettre et peut être suivi d'un nombre quelconque de lettres, de chiffres, de traits d'union ("-"), de soulignement ("_"), de points (":") et de périodes (".")
Parce que vous ne voulez pas de choses comme :: Après et: survolez, cela fonctionnera aussi bien p>
Veuillez noter que la regex est également vraie si le premier caractère de l'ID n'est pas une lettre. Ceci est fait pour gérer certains générateurs
Sans
#foo code>, il est juste: plancher code>.