मैं वसंत डीएसएल के साथ जावास्क्रिप्ट समर्थन के लिए अपाचे ऊंट 2.11 और ऊंट-स्क्रिप्ट 2.2 का उपयोग कर रहा हूं।
मैं समूहों के साथ एक regex प्रतिस्थापन करना चाहता था, लेकिन यह ऊंट में काम नहीं लग रहा है।
उदाहरण: - एक परिवर्तन में, निम्नलिखित काम करता है
<javaScript>request.body.toString().replace("Y","X")</javaScript>
i.e YZ को XZ में बदलें
लेकिन निम्नलिखित नहीं है: -
<javaScript>request.body.toString().replace("/(Y)(.*)$/g","$1")</javaScript>
अर्थात। YZXXX को वाई में बदलें
मैंने खुद को रेगेक्स का परीक्षण किया है https://regex101.com/, इसलिए मैं खुद को रेगेक्स में एक वाक्यविन्यास मुद्दा नहीं मानता
अब यह संभव हो सकता है कि ऊंट-स्क्रिप्ट केवल आंशिक जावास्क्रिप्ट समर्थन प्रदान करता है। लेकिन मुझे यकीन नहीं है कि क्या यह मामला है। कोई विचार?
उत्तर:
उत्तर № 1 के लिए 1मुझे समस्या मिली :-)
मुद्दा यह है: - मैं मान रहा था कि ऊंट जावास्क्रिप्ट जावास्क्रिप्ट कार्यों का उपयोग कर सकता है ... वास्तव में जब यह जावा कार्यों को कॉल करता है।
कोड को जावा सिंटैक्स में बदलना (regex के लिए जावा सिंटैक्स के साथ replaceAll () फ़ंक्शन को कॉल करना) समस्या को हल करता है।
जवाब के लिए 0 № 2
आपको एक का उपयोग करने की जरूरत है regex, एक स्ट्रिंग एक regex की तरह दिखता है। की तुलना करें:
गलत:
request.body.toString().replace("/(Y)(.*)$/g","$1")
सही बात:
request.body.toString().replace(/(Y)(.*)$/g, "$1")
कहा जा रहा है कि, आपके प्रतिस्थापन पैटर्न में बैकस्लैश अनिवार्य है। "$1"
सही होगा