सबसे पहले यह मेरा अब तक का REGEX है

(``|,,|")([^"|^'{2}|`{2}|^,{2}]*)(''|``|")

मुझे लगता है कि मेरे द्वारा सेट किए गए सेकेंड ग्रुप में नकार सही ढंग से काम नहीं कर रहा है। मैंने अपने सभी निषेधों को अलग कर दिया जैसे आप देख सकते हैं, मुझे नहीं पता कि यह काम कर सकता है या नहीं।

यह उदाहरण के लिए इस वाक्य को खोजना चाहिए

``Some question is here ,some text here''

लेकिन यह नहीं

``Some question is here ,,some text here''

मैं पहले से ही घंटों के लिए समाधान खोजने की कोशिश कर रहा हूं लेकिन रेगेक्स में नया हूं और मुझे समाधान नहीं मिला। किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।

2
CoderGer 21 अप्रैल 2021, 12:49
खुशी है कि यह आपके लिए कारगर रहा। कृपया अपवोटिंग पर भी विचार करें यदि मेरा उत्तर आपके लिए उपयोगी साबित हुआ (देखें स्टैक ओवरफ्लो पर अपवोट कैसे करें?) क्योंकि आप 15 प्रतिनिधि अंक तक पहुंचने के बाद अपवोटिंग विशेषाधिकार के हकदार हैं। ध्यान दें कि आप उन सभी उत्तरों को अपवोट कर सकते हैं जो मददगार निकले।
 – 
Wiktor Stribiżew
6 जुलाई 2021, 12:52

1 उत्तर

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

आप उपयोग कर सकते हैं

^(``|,,|")((?:(?!"|'{2}|`{2}|,{2}).)*)(''|``|")$

रेगेक्स डेमो देखें

विवरण:

  • ^ - स्ट्रिंग/लाइन की शुरुआत
  • (``|,,|") - दो बैकटिकज, कॉमा या दोहरा उद्धरण चिह्न
  • ((?:(?!"|'{2}|`{2}|,{2}).)*) - लाइन ब्रेक वर्णों के अलावा कोई भी एकल वर्ण, जितना संभव हो, वह " नहीं है और '', दो बैकटिक्स, या ,, चार शुरू नहीं करता है अनुक्रम
  • (''|``|") - '', दो बैकटिक या एक "
  • $ - स्ट्रिंग/लाइन का अंत।

एक पायथन डेमो देखें:

import re
rx = r"""^(``|,,|")((?:(?!"|'{2}|`{2}|,{2}).)*)(''|``|")$"""
texts = ["``Some question is here ,some text here''", "``Some question is here ,,some text here''"]
for text in texts:
    m = re.search(rx, text)
    if m:
        print(f"MATCHED: {text}")
0
Wiktor Stribiżew 21 अप्रैल 2021, 13:05