2012-08-12 6 views
5

में मैंने सफलतापूर्वक प्रतिस्थापित किए गए बफर में उद्धृत पाठ के प्रत्येक उदाहरण को प्रतिस्थापित करने के लिए इंटरैक्टिव रूप से प्रतिस्थापित किया है- एक उद्धृत संस्करण के साथ नीचे दिखाए गए बफर में। मैंने जिस रेगेक्सपी की खोज की थी वहemacs फ़ंक्शन री-सर्च-फॉरवर्डिंग () ग्रुप अक्षरों को शाब्दिक रूप से regexp

\"\([^\"]*\)\" 

और मैंने डाला गया NEWTEXT था \ 1।

* "PROJECT START" 
:PROPERTIES: 
:ID: 1 
:Unique_ID: 17 
:DURATION: "0 days" 
:TYPE: "Fixed Work" 
:OUTLINE_LEVEL: 1 
:END: 

इंटरैक्टिव रूप से, एबो टेक्स्ट को नीचे दिए गए पाठ में बदल दिया गया था।

* PROJECT START 
:PROPERTIES: 
:ID: 1 
:Unique_ID: 17 
:DURATION: 0 days 
:TYPE: Fixed Work 
:OUTLINE_LEVEL: 1 
:END: 

मैं इस एक ही खोज करते हैं और बफर और क्रियान्वित करने के शीर्ष पर निम्नांकित दो पंक्तियों

(while (re-search-forward "\"\([^\"]*\)\"" nil t) 
    (replace-match "\1" nil nil)) 

डालने से प्रोग्राम के रूप में बदलने के लिए कोशिश की, लेकिन यह केवल एक भी मैच खोजने के बिना शून्य लौट आए।

जब मैं

\(\) 

समूह को छोड़ देते हैं और \ 1 के साथ \ &

(while (re-search-forward "\"[^\"]*\"" nil t) 
    (replace-match "\&" nil nil)) 

मैं हर उद्धृत स्ट्रिंग '&' के साथ प्रतिस्थापित करने के बदलें।

* & 
:PROPERTIES: 
:ID: 1 
:Unique_ID: 17 
:DURATION: & 
:TYPE: & 
:OUTLINE_LEVEL: 1 
:END: 

सब कुछ मैं इन कार्यों में से दोनों के लिए दस्तावेज में देखा है इंगित करता है कि वे इन विशेष वर्ण, और इस मंच पर अन्य सवालों के जवाब में इसके उपयोग के उदाहरण की पहचान करनी चाहिए इन विशेष वर्ण का उपयोग करें।

क्या कोई मुझे समझने में सहायता कर सकता है कि समूह और \ &, \ N, \ वर्णों का सही अर्थ क्यों नहीं लिया जा रहा है?

उत्तर

7

आपको "(", ")" और "\ 1" के लिए "\" s से बचने की आवश्यकता है। आईई .:

(while (re-search-forward "\"\\([^\"]*\\)\"" nil t) 
    (replace-match "\\1" nil nil)) 
+0

यह तय किया गया। आपको बहुत - बहुत धन्यवाद! – user1593649

+2

यदि यह स्पष्ट नहीं था, तो ऐसा इसलिए है क्योंकि '' \ '' तारों के साथ विशेष है (साथ ही regexps)। तो जब आप स्ट्रिंग प्रारूप में regexp प्रदान करते हैं, तो किसी भी बैकस्लाश से बचने की आवश्यकता होती है, अन्यथा स्ट्रिंग मूल्यांकन का नतीजा आपके द्वारा इच्छित रेगेक्सप नहीं होगा। – phils

+0

@ उपयोगकर्ता1593649: यह न भूलें कि आप इसके आगे खोखले टिकमार्क पर क्लिक करके उत्तर स्वीकार कर सकते हैं। –

संबंधित मुद्दे