अजगर 3.0 में नियमित अभिव्यक्ति मिलान नहीं

वोट
47

स्ट्रिंग है I am Fineयह मुझे के रूप में उत्पादन दे रहा है I

import re
string='hello I am Fine'
print(re.search(r'[A-Z]?',string).group())
28/12/2016 को 03:09
उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
0

?निर्दिष्ट करता है कि पूर्ववर्ती चरित्र या वर्ग या मौजूद नहीं हो सकता है। जब re.searchस्ट्रिंग खोज शुरू होता है, यह स्ट्रिंग की शुरुआत में उस वर्ग नहीं मिल रहा है ... और उसकी वजह से एक स्वीकार्य मुकाबला नहीं है ?। यह बस खाली स्ट्रिंग लौटा रहा है।

>>> re.search(r'[A-Z]?', 'hello I am Fine').group()
''

आप इसे पहली राजधानी पत्र को खोजने के लिए चाहते हैं, एक का उपयोग नहीं करते ?:

>>> re.search(r'[A-Z]', 'hello I am Fine').group()
'I'
28/12/2016 को 03:21
का स्रोत उपयोगकर्ता

वोट
1

आप उपयोग कर सकते हैं findall विधि।

से अजगर डॉक्स , अनुभाग 7.2.5.6,

findall() matches all occurrences of a pattern, not just the first one as search() does.

आपके मामले में,

 >>> re.findall(r'[A-Z]',"hello I am Fine")
     ['I', 'F']
28/12/2016 को 04:31
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more