सामान्य नियम के रूप में, मैं कहूंगा: कोई।
\"Burger\" \"Decaf\" shirt\"
आप कैसे तय करते हैं जो \"
ज़रूरत से ज़्यादा (गैर मिलान) है:
एक स्ट्रिंग को देखते हुए? Burger
के बाद यह Decaf
या shirt
के बाद एक है? या इनमें से किसी भी शब्द से पहले? मेरा मानना है कि पसंद मनमानी है।
हालांकि में आपका विशेष उदाहरण ऐसा लगता है कि आप सभी \"
चाहते हैं जो अल्पविराम के नजदीक नहीं हैं।
इनमें निम्नलिखित regexp से पाया जा सकता है:
(?<!^)(?<![,\[])\\"(?![,\]])
हम \\"
केंद्र में (दोहरे उद्धरण के बाद बैकस्लैश) के साथ शुरू करते हैं।
फिर हम कॉमा या क्लोजिंग स्क्वायर ब्रैकेट के बाद वाले सभी मैचों को त्यागने के लिए नकारात्मक लुकहेड का उपयोग करते हैं।
फिर हम अल्पविराम या उद्घाटन ब्रैकेट के बाद होने वाले सभी मैचों को त्यागने के लिए नकारात्मक दिखने का उपयोग करते हैं।
मैंने जो रेगेक्सपी इंजन उपयोग किया है वह लुकराउंड स्टेटमेंट के अंदर वैकल्पिकता का सामना नहीं कर सकता है। इसके चारों ओर काम करने के लिए, मैं इस तथ्य का लाभ उठाता हूं कि लुकराउंड शून्य-लंबाई वाले मैचों हैं और मैं नकारात्मक दिखता हूं कि अभिव्यक्ति की शुरुआत में लाइन की शुरुआत से मेल खाता है।
(पर्ल में) प्रमाण:
$ cat test
"[\"my cars last night\",
\"Burger\",\"Decaf\" shirt\",
\"Mocha\",\"marshmallows\",
\"Coffee Mission\"]"
$ perl -n -e '$_ =~ s/(?<!^)(?<![,\[])\\"(?![,\]])/|||/g; print $_' test
"[\"my cars last night\",
\"Burger\",\"Decaf||| shirt\",
\"Mocha\",\"marshmallows\",
\"Coffee Mission\"]"
हो सकता है कि [(?! <\ रों * [[,] \ s *) (?! [, \]]) '" '] (http://regexstorm.net/tester?p=(%3f%3c!%5cs*%5b%5b%2c%5d%5cs*)%22(%3f!%5b%2c%5c%5d%5d) और मैं =% 5 ब% 22my + कारों + पिछले + रात% 22% 2c% 0 d% 0A% 22Burger% 22% 2c% 22Decaf% 22 + शर्ट% 22% 2c% 0 d% 0A% 22Mocha% 22% 2c% 22marshmallows% 22% 2 सी% 0 डी% 0 ए% 22 कॉफी + मिशन% 22% 5 डी और आर =) –
@stribizhev बहुत बहुत धन्यवाद। यह आपके द्वारा पंक्तिबद्ध नियमित अभिव्यक्ति साइट के लिए एक आकर्षण की तरह काम करता है, लेकिन जब मैं इसे अपने रूबी कोड में आज़माता हूं तो यह अलग-अलग काम करता है और यह इसे नहीं उठाता है। मुझे लगता है कि रेगेक्स में अलग-अलग वाक्य हैं इसे मैच करने के लिए रूबी के लिए कुल्हाड़ी। – 0bserver07