यहाँ से "दोहराने के लिए कुछ भी नहीं है" एक regex है - egrep द्वारा और उसके बाद अजगर 2.7 करने की कोशिश की:अजगर regex
$ गूंज '/some/path/to/file/abcde.csv' | egrep '* ([a-zA-Z] +) सीएसवी।'
/कुछ/path/to/फ़ाइल/
हालांकि abcde.csv, पायथन में एक ही regex:
re.match(r'*([a-zA-Z]+)\.csv',f)
देता है:
+०१२३५१६४१०:Traceback (most recent call last):
File "/shared/OpenChai/bin/plothost.py", line 26, in <module>
hosts = [re.match(r'*([a-zA-Z]+)\.csv',f).group(1) for f in infiles]
File "/usr/lib/python2.7/re.py", line 141, in match
return _compile(pattern, flags).match(string)
File "/usr/lib/python2.7/re.py", line 251, in _compile
raise error, v # invalid expression
sre_constants.error: nothing to repeat
एक खोज से पता चलता कर क्या यहां खेलने में एक अजगर बग प्रतीत होता है
regex error - nothing to repeat
यह एक अजगर बग (कि vim में पूरी तरह से काम करता है) हो रहा है। समस्या का स्रोत है (\ s * ...) + बिट।
हालांकि, यह मेरे लिए स्पष्ट नहीं है: - अजगर खुश करने के लिए क्या तो ऊपर दिखाए गए मेरी regex के लिए समाधान नहीं है?
धन्यवाद।
क्या आपने '। *' या '। *?' की कोशिश की है? –
यह एक अजगर बग नहीं है; आपके पास पिछले चरित्र के बिना '*' (जिसका अर्थ है 'पिछला वर्ण दोहराया गया 0 या अधिक बार')। –
'*' रेगेक्स में 'पिछले या अधिक 'का अर्थ है, तो आप जो शिकायत कर रहे हैं वह एक बग नहीं है। आप क्या चाहते हैं कि '*' मिलान हो? –