मैं एक स्ट्रिंग में शब्दों को ढूंढना चाहता हूं जो एक विशिष्ट पैटर्न से मेल खाते हैं। समस्या यह है कि, यदि शब्द किसी ईमेल पते का हिस्सा हैं, तो उन्हें अनदेखा किया जाना चाहिए।रेगेक्स - ईमेल पते के भीतर, पैटर्न में मिलान करें
"उचित शब्दों" के पैटर्न को सरल बनाने के लिए \w+\.\w+
- एक या अधिक वर्ण, वास्तविक अवधि, और वर्णों की एक और श्रृंखला।
वाक्य जो समस्या का कारण बनता है, उदाहरण के लिए, a.a b.b:c.c [email protected]
है।
लक्ष्य केवल [a.a, b.b, c.c]
से मेल खाना है। अधिकांश रेगेक्स I बिल्ड के साथ, e.e
भी लौटाता है (क्योंकि मैं कुछ शब्द सीमा मिलान का उपयोग करता हूं)।
उदाहरण के लिए:
>>> re.findall(r"(?:^|\s|\W)(?<[email protected])(\w+\.\w+)([email protected])\b", "a.a b.b:c.c [email protected]") ['a.a', 'b.b', 'c.c', 'e.e']
मैं कैसे मिलान कर सकते हैं केवल शब्द है कि "@" होना नहीं जाते हैं?
एक चालाक रेगेक्स जाने की कोशिश करने के बजाय, शायद पहले स्ट्रिंग को साफ करें? पहली पट्टी \ w + @ \ w + फिर प्रक्रिया। मैं अजगर के साथ बहुत सारे ईटीएल काम करता हूं और अक्सर कचरे को साफ करने के लिए यह आसान/तेज़ होता है, फिर डेटा को विभाजित/संसाधित करता है। – sniperd
http: // www।rexegg.com/regex-best-trick.html#thetrick –