2010-08-18 4 views
17

je travaille et non en remplacement-regexp un tampon emacs contenant le texteemacs regexp-constructeur ne

a1b2c3 

en utilisant l'expression rationnelle constructeur, je crée l'expression rationnelle

"b\\(2\\)" 

et peut voir la mise en surbrillance du match (b2, avec le 2 dans une couleur différente).

Cependant, lorsque je colle l'expression dans replace-regexp, je reçois 0 correspond. à la fois avec et sans les citations. pour obtenir un match que je dois utiliser

b\(2\) 

je suppose qu'il ya une fuite qui se passe ici, mais sûrement je dois faire quelque chose de mal. devoir s'échapper manuellement semble vaincre la moitié du point.

Répondre

27

regexp-builder peut montrer l'expression rationnelle dans plusieurs syntaxes. Par défaut, il utilise la syntaxe appropriée pour placer une source Emacs Lisp (syntaxe read), donc l'expression rationnelle est placée entre guillemets doubles et chaque barre oblique inverse est doublée. Pour une utilisation interactive, sélectionnez la syntaxe string avec C-c C-i (reb-change-syntax).

+0

qui est propre, merci beaucoup pour cet indice – Hartmut

+2

Je suis vraiment confus par cette réponse; Considérez ceci: 'string [5string] ' maintenant regexp-builder correspond au" 5 "(" n'importe quel nombre précédé d'un angle d'ouverture ") avec" \\ [[0-9] ". Maintenant, si je 'M-x requête-remplacer \\ [[0-9] RET plop 'je n'ai rien. J'ai essayé \\ [\ [0-9 \] (fonctionne aussi dans le constructeur), rien. Vous n'avez pas indiqué où je suis censé taper 'C-c C-i ': dans le constructeur-regexp, dans le mini-tampon en l'utilisant, ailleurs? Il s'est avéré que c'était dans le constructeur de regexp, mais alors il m'offre 4 choix (read, rx, sregex, string) que dois-je choisir ** pour qu'emacs comprenne sa propre syntaxe regexp? ** – yPhil

+0

Wow la syntaxe du commentaire s'échappe les caractères d'échappement, qui rendront les commentaires sur les caractères d'échappement mal à l'aise :) Sérieusement, même dans les marqueurs "code", s'échapper? – yPhil