मैं एक नोडज स्क्रिप्ट की तलाश में हूं जो IN को नीचे OUT से बदल देगी।

में

/* api_start ====
app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));
==== api_end */

या

// app.use('/api',require('./api/api'));
// app.use('/sms',require('./api/sms'));

बाहर

app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));

मूल रूप से कोड की उन पंक्तियों को अनसुना करना।


या

बस एक टिप्पणी को प्रतिस्थापित करें, जैसे, /* api_here */ एक फ़ाइल की सामग्री के साथ जिसमें बीच में होगा जहां ऊपर OUT से (api.js)।

अपडेट करें

से: https://stackoverflow.com/a/25072070/3066142

निम्नलिखित काम करेगा अगर मैं उस लाइन को पहचानने के लिए सिर्फ रेगेक्स लिख सकता हूं। नीचे मेरा प्रयास है

// require:
var replace = require("replace");

// use:
replace({
    regex: "//\s+app\.use\('/api',require\('\./api/api'\)\);", // string to be replaced
    replacement: "test worked!!", // replacement string
    paths: ['dist/server.js'], // path/to/your/file'
    recursive: true,
    silent: true,
});
1
Omar 28 पद 2018, 19:35

1 उत्तर

सबसे बढ़िया उत्तर

वर्किंग कोडपेन (अधिक ब्लॉक टिप्पणियों आदि सहित): https://codepen. io/Frederic-Klein/pen/KbXxeB?editors=0012

इनलाइन स्पष्टीकरण के साथ प्रतिस्थापन के लिए (...) और गैर-कैप्चरिंग (?:...) समूहों को कैप्चर करने के साथ रेगुलर एक्सप्रेशन का उपयोग करके दिए गए उदाहरण के मिलान और प्रतिस्थापन के लिए उदाहरण कोड:

const content = `
/* api_start ====
app.use('/api',require('./api/api'));
app.use('/sms',require('./api/sms'));
==== api_end */
// app.use('/api',require('./api/api'));
// app.use('/sms',require('./api/sms'));
`;

const regex_block_comments = /^\/\*.*\n((?:app.*\n)*)(?:.*\*\/\n)/gm;
// match lines
// starting with /*
// having the following lines start with app, capture all those lines as one group ($1 reference)
// having a line ending with */ afterwards, as non-capturing group
// repeat globally (g) and match multiline (m) string

const regex_comment = /^\/\/\s*(app.*;\n)/gm;
// match lines
// starting with //
// ignore following whitespaces
// having text "app" afterwards, capture from app to line-ending as group ($1 reference)

const replacement = `$1`;

newcontent = content.replace(regex_block_comments,replacement);
newcontent = newcontent.replace( regex_comment,replacement);

// content after replacements
console.log(newcontent);

रेगुलर एक्सप्रेशन के बारे में अधिक जानने के लिए और अपने पैटर्न बनाने के लिए मैं https://regexr.com/ और https://regex101.com/.

1
Frederic Klein 29 पद 2018, 15:55