2011-09-13 12 views
75

मैं उस दस्तावेज़ को पार्स करने की कोशिश कर रहा हूं जिसमें संदर्भ संख्याएं भरे हुए हैं।RegEx - परिवर्तनीय लंबाई की मिलान संख्या

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

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

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

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

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

+8

भले ही ओपी परवाह नहीं है, मैं उत्सुक हूं: इस प्रश्न पर डाउनवोट क्यों? मुझे इसके साथ कुछ गलत नहीं दिख रहा है। – John

+3

@ जॉन: किसी कारण से लोग ऐसे प्रश्नों को कम करना चाहते हैं जहां आसान उत्तर हैं, खासकर 'रेगेक्स' टैग में। – CanSpice

+35

@xanatos - तो SO प्रश्न केवल उन लोगों के लिए हैं जो पहले से ही विशेष विषय में सक्षम हैं? क्या एक महान योजना है। –

उत्तर

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

जोड़ने की कोशिश प्लस (ते)

21

इस प्रयास करें:

{[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] के सबसे regex जायके के लिए उपयोग कर सकते हैं:

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

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

+2

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

48

आप किस रेगेक्स इंजन का उपयोग कर रहे हैं?

\{\d+:\d+\} 

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

संबंधित मुद्दे