Dans Emacs regex, \n
ne « correspond pas à un caractère de nouvelle ligne \n
.
- 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îneabc\n
,$
correspond à la position entrec
et\n
? - Quelle est lexpression régulière qui correspond à
\n
?
Commentaires
Réponse
- Oui.
$
correspond à la fin de la ligne , et non au caractère de nouvelle ligne qui vient après la fin de la ligne. - Faites
C-M-s C-q C-j
.C-q
est la liaison par défaut pourquoted-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")
où ^ J est inséré parC-q C-j
), lapprocheC-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.
(re-search-forward "\n")
fonctionne bien pour moi.abc\r\n
au lieu deabc\n
.\n
àn
. mon tampon est en mode fondamental. Cela arrive à nimporte quel texte, donc tout texte avec une nouvelle ligne ou une nouvelle lettren
est un exemple de travail\r\n
àrn