Je ne pense pas que vous pouvez le faire correctement. Bien que je me demande pourquoi vous devez le faire en une fois?
je peux penser à une façon vraiment pauvre de le faire, mais même si je ne le recommande pas, va ici:
Vous pouvez sorte de le faire avec l'expression rationnelle ci-dessous. Cependant, vous devrez augmenter le nombre de captures et de sorties avec un _ à la fin du nombre potentiel d'espaces dans le rel. Je parie que c'est une exigence qui interdit cette solution.
Recherche:
{\<a *href\=\"[^\"]*" *rel\=\"}{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*{([^ ]*|[^\"]*)}(|\")*
Remplacer:
\1\2_\3_\4_\5_\6_\7_\8_
De cette façon, a deux inconvénients, on est qu'il pourrait y avoir des limites au nombre de captures que vous pouvez avoir dans TextMate, deux est que vous aurez finir avec un grand nombre de _ à la fin de chaque ligne.
Avec votre test en cours, avec l'expression rationnelle ci-dessus, vous finiriez avec:
<a href="#" rel="this_is_a_test">____
PS: Ce regex est du format de la recherche de Visual Studio/remplacer boîte. Vous aurez probablement besoin de changer certains caractères pour l'adapter au texte.
{} => capturing group
() => grouping
[^A] => anything but A
(|\")* => space or "
\1 => is the first capture
Ce n'est pas facile avec un éditeur de texte qui ne permet que la recherche et le remplacement. C'est parce que vous avez besoin d'un modèle pour trouver le bon endroit (attribut rel) et ensuite vous avez besoin d'un modèle à remplacer. –
J'espérais trouver une solution avec une regex dans une autre regex (si cela a du sens). Parce que vous avez raison, ce match est en quelque sorte une solution en deux passes. Trouve d'abord la chaîne: (rel = ". *") Puis remplace tous les espaces par (_). Peut-être que ce n'est tout simplement pas possible? –
@Jakob Madsen Votre désir de récursion est exactement exact, et à l'utilisation de certaines extensions Perl, les regex ne peuvent pas se reproduire. C'est l'une des raisons pour lesquelles les regex sont mauvaises lors de l'analyse HTML et XML. Vous avez besoin d'un analyseur. –