Quelle est lexpression régulière pour correspondre à un caractère de nouvelle ligne?

Dans Emacs regex, \n ne « correspond pas à un caractère de nouvelle ligne \n.

  1. Ai-je raison de dire que $ correspond à la position entre un caractère de nouvelle ligne et le caractère juste avant le caractère de nouvelle ligne. par exemple pour une chaîne abc\n, $ correspond à la position entre c et \n?
  2. Quelle est lexpression régulière qui correspond à \n?

Commentaires

  • Pouvez-vous fournir un exemple de travail minimum? Peut-être que ' je manque quelque chose, mais (re-search-forward "\n") fonctionne bien pour moi.
  • Votre fichier peut utiliser \ r \ n pour les nouvelles lignes et il se peut que vous deviez inclure \ r dans votre expression régulière, donc abc\r\n au lieu de abc\n.
  • @Dan: les CM et Mx correspondent tous les deux à \n à n. mon tampon est en mode fondamental. Cela arrive à nimporte quel texte, donc tout texte avec une nouvelle ligne ou une nouvelle lettre n est un exemple de travail
  • @Jordon: CM et Mx correspondent tous les deux \r\n à rn
  • @Tim, oui car si vous les saisissez de manière interactive, vous ' d doit faire une insertion entre guillemets, Cq Cm et Cq Cj respectivement. Vous pouvez saisir \ r \ n si vous les saisissez dans une chaîne lisp.

Réponse

  1. Oui. $ correspond à la fin de la ligne , et non au caractère de nouvelle ligne qui vient après la fin de la ligne.
  2. Faites C-M-s C-q C-j. C-q est la liaison par défaut pour quoted-insert et fonctionne également dans le minibuffer. Cette expression recherche littéralement une nouvelle ligne: C-j.

Commentaires

  • 2. dites-vous que le caractère de nouvelle ligne ne peut pas être représenté comme une séquence déchappement dans Emacs regex?
  • Que vous recherchiez une nouvelle ligne de manière interactive ou via elisp (par exemple (looking-at "^J") ^ J est inséré par C-q C-j), lapproche C-q C-j fonctionne toujours. Mais lorsque vous utilisez des fonctions elisp comme les mêmes, looking-at \n fonctionne aussi; M-: (looking-at "\n") RET sera évalué à vrai si le curseur est à la fin de la ligne (et il y a ' une nouvelle ligne après cela).
  • Juste pour mentionner que si vous utilisez regexp-builder, vous ' pouvez reconnaître une nouvelle ligne avec [\n].
  • @Nsukami_: CM et Mx correspondent tous les deux [\n] à n.

Réponse

Comme le fait remarquer Dan, lexpression régulière qui correspond à une nouvelle ligne est une nouvelle ligne .

Vous pouvez représenter une nouvelle ligne dans une chaîne entre guillemets dans elisp comme "\n". Il ny a pas de syntaxe supplémentaire spéciale spécifique aux regexp pour cela – vous utilisez simplement une nouvelle ligne, exactement comme tout autre caractère littéral.

Si vous entrez une expression régulière de manière interactive alors vous pouvez insérer la nouvelle ligne avec Cq Cj , comme le souligne la réponse de kaushalmodi.

Commentaires

  • Merci! Dans emacs (pas dans elisp), Cq Cj est-il le seul moyen de faire correspondre un caractère de nouvelle ligne? \n ne ' t correspond à un caractère de nouvelle ligne.
  • Oui. Plus précisément, taper une nouvelle ligne est le seul moyen de faire correspondre un caractère de nouvelle ligne lors de la saisie dun regexp de manière interactive (car il ny a pas de séquence déchappement de regexp pour une nouvelle ligne), et C-q C-j est le moyen le plus fiable de taper une nouvelle ligne à une invite.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *