मुझे यकीन है कि आप वास्तव में क्या देख रहे हैं नहीं कर रहा हूँ, लेकिन
import re
data = "date=2010-05-09,time=16:41:27,device_id=FE-2KA3F09000049,log_id=0400147717,log_part=00,type=statistics,subtype=n/a,pri=information,session_id=o49CedRc021772,from=\"[email protected]\",mailer=\"mta\",client_name=\"example.org,[194.177.17.24]\",resolved=OK,to=\"[email protected]\",direction=\"in\",message_length=6832079,virus=\"\",disposition=\"Accept\",classifier=\"Not,Spam\",subject=\"=?windows-1255?B?Rlc6IEZ3OiDg5fDp5fog+fno5fog7Pf46eHp7S3u4+Tp7SE=?=\""
pattern = r"""(\w+)=((?:"(?:\\.|[^\\"])*"|'(?:\\.|[^\\'])*'|[^\\,"'])+)"""
print(re.findall(pattern, data))
आप
[('date', '2010-05-09'), ('time', '16:41:27'), ('device_id', 'FE-2KA3F09000049'),
('log_id', '0400147717'), ('log_part', '00'), ('type', 'statistics'),
('subtype', 'n/a'), ('pri', 'information'), ('session_id', 'o49CedRc021772'),
('from', '"[email protected]"'), ('mailer', '"mta"'),
('client_name', '"example.org,[194.177.17.24]"'), ('resolved', 'OK'),
('to', '"[email protected]e.org"'), ('direction', '"in"'),
('message_length', '6832079'), ('virus', '""'), ('disposition', '"Accept"'),
('classifier', '"Not,Spam"'),
('subject', '"=?windows-1255?B?Rlc6IEZ3OiDg5fDp5fog+fno5fog7Pf46eHp7S3u4+Tp7SE=?="')
]
आप (mystring.strip("'\"")
का प्रयोग करके) बाद में उद्धृत तार को साफ करने के लिए चाहते हो सकता देता है।
EDIT: यह रेगेक्स अब भी उद्धृत तारों (a="She said \"Hi!\""
) के अंदर से बच निकले उद्धरणों को सही तरीके से संभालता है। regex के
स्पष्टीकरण:
(\w+)=((?:"(?:\\.|[^\\"])*"|'(?:\\.|[^\\'])*'|[^\\,"'])+)
(\w+)
: पहचानकर्ता का मिलान करें और कोई backreference में कब्जा। 1
=
: मैच एक =
(
: निम्नलिखित कैद backreference में कोई। 2:
(?:
:
"(?:\\.|[^\\"])*"
: निम्न में से एक एक दोहरे उद्धरण, या तो शून्य या निम्न में से अधिक के बाद: एक भाग निकले चरित्र या एक गैर उद्धरण/गैर बैकस्लैश चरित्र, एक और द्वारा पीछा किया दोहरे उद्धरण
|
: या
'(?:\\.|[^\\'])*'
:, ऊपर देखें सिर्फ एकल उद्धरण के लिए।
|
: या
[^\\,"']
: एक चरित्र न एक बैकस्लैश, अल्पविराम, और न ही एक बोली है।
)+
: जितनी बार संभव हो सके कम से कम एक बार दोहराएं।
)
: कैप्चरिंग समूह संख्या का अंत। 2.
धन्यवाद इस मैं क्या जरूरत थी। – gtfx
इस तरह आप regex करते हैं !! :) – jathanism