RegEx - परिवर्तनीय लंबाई के मैच संख्या


131

मैं एक दस्तावेज़ को पार्स करने की कोशिश कर रहा हूं जिसमें संदर्भ संख्याएं हैं जो पूरे भर में हैं।

पाठ पाठ पाठ {4: 2} अधिक अविश्वसनीय पाठ {4: 3} बहुत बाद में {222: 115} और फिर भी कुछ और पाठ।

संदर्भ हमेशा कोष्ठक में लिपटे रहेंगे, और हमेशा दोनों के बीच एक बृहदान्त्र होगा। मैंने उन्हें खोजने के लिए एक अभिव्यक्ति लिखी।

{[0-9]:[0-9]}

हालाँकि, यह स्पष्ट रूप से उस क्षण में विफल हो जाता है जब आप दो या तीन अंकों की संख्या में आते हैं, और मुझे यह पता लगाने में परेशानी हो रही है कि क्या होना चाहिए। 3 से अधिक अंक कभी नहीं होंगे {999: 999} से निपटने के लिए अधिकतम आकार है।

किसी को भी इसे संभालने के लिए एक उचित अभिव्यक्ति का विचार है?


8
यहां तक ​​कि अगर ओपी परवाह नहीं करता है, तो मैं उत्सुक हूं: इस प्रश्न पर नीचता क्यों? मुझे इसमें कोई गलत बात नजर नहीं आती।
जॉन

3
@ जॉन: किसी कारण से लोग ऐसे सवालों को छोड़ना पसंद करते हैं जहां आसान जवाब होते हैं, खासकर regexटैग में।
कैंसिसे

1
अंत में इस प्रश्न को गूगल पर एक उच्च रैंक मिला और मुझे इस में अपना उत्तर मिला।
जेसनफिश

जवाबों:


134
{[0-9]+:[0-9]+}

प्लस जोड़ने का प्रयास करें


यह मुझे खोजने के लिए बहुत लंबा समय लगा ... इस जानकारी के लिए धन्यवाद!
स्तर42

76

क्या रेगेक्स इंजन आप उपयोग कर रहे हैं? उनमें से अधिकांश निम्नलिखित अभिव्यक्ति का समर्थन करेंगे:

\{\d+:\d+\}

के \dलिए वास्तव में आशुलिपि है [0-9], लेकिन महत्वपूर्ण हिस्सा है +जिसका अर्थ है "एक या अधिक"।


31

इसे इस्तेमाल करे:

{[0-9]{1,3}:[0-9]{1,3}}

इसका {1,3}मतलब है "पूर्ववर्ती पात्रों के 1 और 3 के बीच मिलान"।


8

आप निर्दिष्ट कर सकते हैं कि आप पिछली बार कितनी बार आइटम का उपयोग करके मिलान करना चाहते हैं {min,max}

{[0-9]{1,3}:[0-9]{1,3}}

इसके अलावा, आप अधिकांश रेगेक्स जायके के \dबजाय अंकों के लिए उपयोग कर सकते हैं [0-9]:

{\d{1,3}:\d{1,3}}

तुम भी बाहरी बचने विचार कर सकते हैं {और }अभी यह स्पष्ट है कि वे एक पुनरावृत्ति परिभाषा का हिस्सा नहीं हैं बनाने के लिए,।


2
जब तक आप गैर-यूरोपीय अंकों से प्यार नहीं करते हैं, तब तक कृपया इसे सबसे अधिक रेगेक्स फ्लेवर के साथ न करें: fileformat.info/info/unicode/category/Nd/list.htm
xanatos

1

{d *: \ d *} को काम करना चाहिए।

* का अर्थ है मैच 0 या पूर्ववर्ती घटनाओं से अधिक, जो एक अंक है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.