Google डॉक्स रेगेक्स की जगह समूहों को कैप्चर करने से पाठ का उपयोग कैसे करें?


12

मैं कुछ पाठ का मिलान करने की कोशिश कर रहा हूं और फिर पाठ के साथ कुछ अतिरिक्त वर्णों को बदलूंगा। न्यूनतम उदाहरण पाठ:

#10 Oranges. These are citrus fruits

वांछित उत्पादन:

#10 Oranges. These are citrus fruits

regex: (#\d{1,2}[^.]*\.)\s*

से बदलो: $1\n

(मैंने Match using regular expressionsजाँच की है)

रेगेक्स सफलतापूर्वक मेल खाता है #10 Oranges.। हालाँकि गिने हुए बैकरेस्प्रेस टेक्स्ट को कैप्चर ग्रुप से रिप्लेस नहीं करते हैं लेकिन सिर्फ शाब्दिक (शाब्दिक आउटपुट $1\n) में होते हैं। मैंने गिने हुए बैकरेस के लिए एक बैकस्लैश का उपयोग करने की भी कोशिश की है \1और परिणाम समान है।

क्या मुझे कुछ याद आ रहा है? मैं नियमित अभिव्यक्ति का उपयोग करके Google डॉक्स में मिलान किए गए पाठ को कैसे पुन: स्थापित करूं?


2
डॉक्स अब स्पष्ट रूप से Note: Capture groups only work with Google Sheets.
उपयोगकर्ता

जवाबों:


4

संक्षिप्त जवाब

इसके बजाय अंतर्निहित खोजने और फ़ंक्शन का उपयोग करने के बजाय Google Apps स्क्रिप्ट या ऐड-ऑन का उपयोग करें।

व्याख्या

Google दस्तावेज़ों की खोज और बदलें सुविधा पर, प्रतिस्थापित भाग नियमित अभिव्यक्तियों के साथ काम नहीं करता है और यह replaceText()Google Apps स्क्रिप्ट में दस्तावेज़ सेवा से विधि के साथ काम नहीं करता है।

एक साधारण स्क्रिप्ट बनाने के लिए बहुत मूल बातें जानने के लिए, https://developers.google.com/apps-script/overview देखें

कोड

यह कोड संदर्भ में शामिल एक का एक अनुकूलन है

function myFunction() {
  var body = DocumentApp.getActiveDocument().getBody();
  var paragraphs = body.getParagraphs();
  for (var i=0; i<paragraphs.length; i++) {
    var text = paragraphs[i].getText();
    paragraphs[i].replaceText(".*", 
       text.replace(/(\d{1,2}[^.]*\.)\s*/gi, '$1\n') );
  }
}

संदर्भ


3
मैं इस पर विचार करने पर विचार करूंगा, लेकिन क्या यह तथ्य है कि रिप्लेस बग के साथ काम नहीं करता है? इस दस्तावेज़ के अनुसार, ऐसा लगता है कि इसे काम करना चाहिए: support.google.com/docs/answer/62754# अनियमित_expressions (अनुभाग देखें Replace with regular expressions)
उपयोगकर्ता

2

थोड़ा हैसी, लेकिन इसे स्क्रिप्ट पर एक अतिरिक्त ऐड की आवश्यकता नहीं है और संभवतः आपके उपयोग के मामलों का 99% कवर करेगा। आप अभी भी कैप्चर समूहों के साथ RegexReplaceऔर बदले पाठ में संदर्भ का उपयोग कर सकते हैं $1या के साथ $2। बस अपने रेगेक्स को दो कैप्चर समूहों में विभाजित करें और एक यादृच्छिक (आमतौर पर उपयोग किए जाने वाले) चरित्र की तरह समतल करें ~। फिर आप उसमें से पूरी लौटी हुई वैल्यू ले सकते हैं और ~एक नई लाइन से बदल सकते हैं :

=SUBSTITUTE(REGEXREPLACE(A1,"(#\d{1,2}[^.]*\.)(\s*)","$1~$2"),"~",CHAR(10))

स्क्रीनशॉट

Google शीट में उपयोग किए गए regex सिंटैक्स पर अधिक जानकारी के लिए, re2 कल्पना देखें


जहाँ तक मैं समझता हूँ, प्रश्न डॉक्स के बारे में है, शीट्स के बारे में नहीं।
törzsmókus

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.