Je cherche à remplacer la recherche par des expressions régulières dans Sublime Text 2. La documentation à ce sujet est plutôt anémique. Plus précisément, je veux faire un remplacement sur les groupes, donc quelque chose comme la conversion de ce texte:
Hello my name is bob
Et ce terme de recherche:
Trouver quoi: my name is (\w)+
Remplacer par: my name used to be $(1)
Le terme de recherche fonctionne très bien, mais je ne peux pas trouver un moyen de faire un remplacement en utilisant le groupe regexp.
la source
$0
?\0
est égal au caractère nul et\0ddd
est utilisé comme échappement pour un caractère avec le point de code ddd). Cependant,$0
semble être utilisé dans Sublime2 comme une "marque de sortie" selon cette page (même si j'ai du mal à trouver suffisamment d'exemples pour déterminer exactement comment une marque de sortie est utilisée dans Sublime2).$0
est utilisée dans Sublime Text 2/3 pour placer le curseur sur la sortie d'une extension d'extrait de code. Plus d'informations sur les extraits .$0
est la correspondance regex entière;$1
est le premier groupe de capture.Soit dit en passant, dans la question ci-dessus:
Pour:
Trouver une pièce:
Avec remplacer la pièce:
Retournerais:
Remplacez la pièce de recherche par:
Et remplacer sera ce que vous attendez:
Alors que (\ w) + correspondra à "bob", ce n'est pas le groupe que vous souhaitez remplacer.
la source
Bien que la réponse précédente soit correcte, il y a une chose importante à souligner! Tous les segments correspondants dans votre chaîne de recherche que vous souhaitez utiliser dans votre chaîne de remplacement doivent être placés
( )
entre parenthèses , sinon ces segments correspondants ne seront pas accessibles aux variables définies telles que$1
,$2
ou\1
,\2
etc.Par exemple, nous voulons remplacer 'em' par 'px' mais conserver les valeurs numériques:
margin: $1px
oumargin: \1px
margin: ([0-9]*)em
// avec parenthèsesmargin: [0-9]*em
EXEMPLE DE CAS CORRECT: Utilisation de la
margin: ([0-9]*)em
chaîne de recherche (entre parenthèses). Mettez le segment correspondant souhaité (par exemple$1
ou\1
)( )
entre parenthèses comme suit:margin: ([0-9]*)em
(entre parenthèses)margin: $1px
oumargin: \1px
EXEMPLE DE CAS INCORRECT: Utilisation de la
margin: [0-9]*em
chaîne de recherche (sans parenthèses). Le modèle d'expression régulière suivant correspondra aux lignes souhaitées, mais les segments correspondants ne seront pas disponibles dans la chaîne remplacée en tant que variables telles que$1
ou\1
:margin: [0-9]*em
(sans parenthèses)margin: $1px
oumargin: \1px
la source
Voici une présentation visuelle de la réponse approuvée.
la source
$_SESSION[(\w+)
? merciNotez que si vous utilisez plus de 9 groupes de capture, vous devez utiliser la syntaxe
${10}
.$10
ou\10
ou\{10}
ne pas fonctionner.la source
1
au deuxième groupe de capture, vous devez utiliser des accolades comme${2}1
; 21 $ fait référence au 21e groupe de capture, qui n'existe pas.Regarder l'article de la documentation non officielle de Sublime Text sur la recherche et le remplacement , il semble que
+(.+)
c'est le groupe de capture que vous voudrez peut-être ... mais j'ai personnellement utilisé(.*)
et cela a bien fonctionné. Pour REMPLACER comme vous le dites, vous aimerez peut-être cette conversation dans les forums , en particulier ce message qui dit d'utiliser simplement$1
pour utiliser le premier groupe capturé.Et puisque les images valent mieux que les mots ...
Avant:
Après:
la source