हैलो डेवलपर समुदाय!
मैं वर्तमान में Citrix NetScaler कॉन्फ़िगरेशन को प्रबंधित करने के लिए कुछ Ansible playbooks विकसित करने पर काम कर रहा हूं और निम्नलिखित के बारे में कुछ मदद मांगना चाहता हूं।
मेरे पास निम्न कॉन्फ़िगरेशन लाइन है जिसे मैं टेक्स्टएफएसएम के साथ पार्स करना चाहता हूं:
add lb vserver VS_ssl_443_testapps SSL 0.0.0.0 0 -persistenceType RULE -timeout 30 -rule "HTTP.REQ.COOKIE.VALUE(\"JSESSIONID\")" -resRule "HTTP.RES.SET_COOKIE.COOKIE(\"JSESSIONID\").VALUE(\"JSESSIONID\")" -cltTimeout 600 -td 1
मुझे -नियम कीवर्ड के बाद दोहरे उद्धरण चिह्नों के बीच किसी भी सामग्री से मेल खाने वाला एक रेगेक्स लिखना होगा। प्रारंभ और अंत दोहरे उद्धरण चिह्नों के बीच की सामग्री में अधिक दोहरे उद्धरण हो सकते हैं।
"HTTP.REQ.COOKIE.VALUE(\"JSESSIONID\")"
मेरी समस्या यह है कि, यदि -नियम कीवर्ड के बाद परिभाषित कोई वैकल्पिक -resRule कीवर्ड है और -resRule कीवर्ड के बाद के टेक्स्ट में भी दोहरे उद्धरण हैं, तो सामग्री मेल खाती है -नियम और -resRule कीवर्ड दोनों के बाद की सामग्री शामिल है।
क्या "अवांछित" कीवर्ड की एक सूची को परिभाषित करना संभव है जब डबल qoutes के प्रारंभ और समाप्ति के बीच की सामग्री में कोई भी कीवर्ड होता है, मिलान अवांछित कीवर्ड से पहले अंतिम डबल qoute पर समाप्त होता है?
तो उदाहरण के लिए,
मैं लुकहेड और गैर-कैप्चर समूहों के साथ खेलने की कोशिश कर रहा हूं, लेकिन बिना किसी किस्मत के।
https://regex101.com/r/UkPr05/1
(((\")(.*)(\"))(?:( -resRule.*)))
अग्रिम बहुत बहुत धन्यवाद!
2 जवाब
आप व्यंजक -rule\s*(\"(\\\"|[^\"])*\")
का उपयोग कर सकते हैं जो तर्क -rule
के लिए केवल उद्धृत मान लेगा, मुख्य परिवर्तन हैं
- पैटर्न
-rule
से शुरू होता है, - भाग एक उद्धरण का उपभोग करता है यदि वह दोहराए जाने वाले समूह में बच जाता है, और एक अतिरिक्त अंतिम उद्धरण का उपभोग करता है।
https://regex101.com/r/HoCM1v/1/
यदि आप गैर-उद्धृत पैरामीटर भी शामिल करना चाहते हैं तो आप -rule\s*(\"(\\\"|[^\"])*\"|\S+)
का उपयोग कर सकते हैं, जहां \S+
अगले स्थान तक वर्णों का प्रतिनिधित्व करता है।
आप -rule\s*
के बाद वैकल्पिक व्हाइटस्पेस वर्णों और "
का मिलान कर सकते हैं
फिर "
को छोड़कर किसी भी चार का मिलान करें या एक बच गए चार से मिलान करें और उसके बाद समापन "
को अंत में मिलान करें -resRule
मैच के हिस्से से मेल नहीं खाएगा।
-rule\s*"([^"\\]*(?:\\.[^"\\]*)*)"