Pomyślnie użyłem interaktywnej wymiany, aby zastąpić każdą instancję cytowanego tekstu w buforze pokazanym poniżej za pomocą niecedowanej wersji. Wyszukane zapytanie wyglĘ ... dało:Funkcja emacs funkcja ponownego wyszukiwania w przód interpretacja () grupa znaków dosłownie w wyrażeniu
\"\([^\"]*\)\"
, a wstawiony NEWTEXT by \ 1.
* "PROJECT START"
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: "0 days"
:TYPE: "Fixed Work"
:OUTLINE_LEVEL: 1
:END:
Interaktywnie tekst aboe został przekształcony w tekst poniżej.
* PROJECT START
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: 0 days
:TYPE: Fixed Work
:OUTLINE_LEVEL: 1
:END:
starałem się zrobić to samo wyszukiwanie i zastąpić programowo poprzez wstawienie następujące dwa wiersze
(while (re-search-forward "\"\([^\"]*\)\"" nil t)
(replace-match "\1" nil nil))
w górnej części bufora i wykonanie, ale to po prostu wrócił nil bez znalezienia w jednym meczu.
Kiedy pominąć grupowanie
\(\)
i zastąpić \ 1 z \ &
(while (re-search-forward "\"[^\"]*\"" nil t)
(replace-match "\&" nil nil))
dostaję każdy cudzysłowie zastąpione '&'.
* &
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: &
:TYPE: &
:OUTLINE_LEVEL: 1
:END:
Wszystko widziałam w dokumentacji dla obu tych funkcji oznacza, że należy je uznać te znaki specjalne, a także przykłady jego użycia w odpowiedzi na inne pytania na tym forum używać tych znaków specjalnych.
Czy ktoś może mi pomóc zrozumieć, dlaczego znaki grupowania i \ nie są interpretowane poprawnie?
To naprawiło to. Dziękuję bardzo! – user1593649
Jeśli nie było to jasne, to dlatego, że '' \ '' jest specjalne dla ciągów znaków (a także dla wyrażeń regularnych). Jeśli więc podasz wyrażenie regularne w formacie ciągu znaków, wszelkie ukośniki odwrotne muszą zostać zmienione, w przeciwnym razie wynikiem oceny łańcuchów nie byłby wyraŜony przez ciebie wyraŜenie regularne. – phils
@ user1593649: Nie zapomnij, że możesz zaakceptować odpowiedź, klikając pusty znaczek obok niej. –