इवान Fosmark पहले से ही एक अच्छा जवाब दिया की जरूरत नहीं है। यह सिर्फ अधिक जानकारी है। यह एक अच्छा रेगुलर एक्सप्रेशन नहीं है,
pattern = "6 of(.*)fans"
सामान्य में:
आप इस रेखा है। यदि इनपुट पाठ था:
"99 में से 6 प्रशंसकों की पूरी आकाशगंगा में प्रशंसकों" तो फिर मैच समूह (कोष्ठकों के अंदर सामान) होगा:
"99 पूरे में प्रशंसकों "
की गैलेक्सी तो, हम एक पैटर्न चाहते हैं जो ऊपर की तरह एक मूर्ख इनपुट पाठ के साथ भी आप जो चाहते हैं उसे पकड़ लेंगे।
इस मामले में, यह वास्तव में कोई फर्क नहीं पड़ता कि आप सफेद स्थान से मेल खाते हैं, क्योंकि जब आप एक स्ट्रिंग को एक पूर्णांक में परिवर्तित करते हैं, तो सफेद स्थान को अनदेखा किया जाता है। लेकिन चलो सफेद जगह को अनदेखा करने के लिए पैटर्न लिखें।
*
वाइल्डकार्ड के साथ, लंबाई शून्य की एक स्ट्रिंग से मिलान करना संभव है। इस मामले में मुझे लगता है कि आप हमेशा एक गैर-खाली मैच चाहते हैं, इसलिए आप एक या अधिक वर्णों से मेल खाने के लिए +
का उपयोग करना चाहते हैं।
पायथन में गैर-लालची मिलान उपलब्ध है, इसलिए आप इसके साथ फिर से लिख सकते हैं। नियमित अभिव्यक्ति वाले पुराने कार्यक्रमों में गैर-लालची मिलान नहीं हो सकता है, इसलिए मैं एक ऐसा पैटर्न भी दूंगा जिसके लिए गैर लालची की आवश्यकता नहीं है।
तो, गैर लालची पैटर्न:
pattern = "6 of\s+(.+?)\s+fans"
अन्य एक:
pattern = "6 of\s+(\S+)\s+fans"
\s
का अर्थ है "किसी भी सफेद स्थान" और एक जगह, एक टैब, और कुछ अन्य से मेल खाएगी अक्षर (जैसे "फॉर्म फीड")। \S
का मतलब है "कोई भी गैर-सफेद-स्थान" और \s
मिलान से कुछ भी मेल खाता है।
यह सिर्फ 99
के एक मैच के समूह वापसी होगी "प्रशंसकों की पूरी आकाशगंगा में 99 में से 6 प्रशंसक"
:
पहले पैटर्न मूर्खतापूर्ण इनपुट पाठ के साथ अपना पहला पैटर्न की तुलना में बेहतर है।
लेकिन यह अन्य मूर्खतापूर्ण इनपुट पाठ की कोशिश: यह 99 crazed
के एक मैच के समूह वापसी होगी
"99 में से 6 पागल प्रशंसक"
।
दूसरा पैटर्न बिल्कुल मेल नहीं खाता है, क्योंकि "crazed" शब्द "प्रशंसकों" शब्द नहीं है।
हम्म।
pattern = "6 of\D*?(\d+)\D*?fans"
\d
किसी भी अंकों ('9'
-'0'
) से मेल खाता है: यहाँ एक आखिरी पैटर्न है कि हमेशा भी मूर्खतापूर्ण इनपुट पाठ के साथ सही काम करना चाहिए। \D
किसी भी गैर-अंकों से मेल खाता है।
मैच समूह 99
हो जाएगा "प्रशंसकों की पूरी आकाशगंगा में 99 में से 6 प्रशंसक"
:
यह सफलतापूर्वक कुछ भी दूर से गैर अस्पष्ट है कि मेल खाएगी।
"99 में से 6 पागल प्रशंसक"
मैच समूह 99
हो जाएगा।
यह मेल नहीं खाएगी "99 41 प्रशंसकों के 6"
, क्योंकि वहाँ वहाँ में एक दूसरे नंबर था।
पायथन नियमित अभिव्यक्तियों के बारे में अधिक जानने के लिए, आप variouswebpages पढ़ सकते हैं। एक त्वरित अनुस्मारक के लिए, पायथन दुभाषिया के अंदर, कार्य करें:
>>> import re
>>> help(re)
जब आप किसी वेब पृष्ठ से पाठ "स्क्रैप" कर रहे हैं, तो आप कभी कभी HTML कोड के afoul चलाने हो सकता है। सामान्य रूप से, नियमित अभिव्यक्ति HTML या XML मार्कअप को अनदेखा करने के लिए एक अच्छा उपकरण नहीं है (here देखें); आप एचटीएमएल को पार्स करने और पाठ को निकालने के लिए Beautiful Soup का उपयोग करने के लिए बेहतर प्रदर्शन करेंगे, जिसके बाद आप वास्तव में इच्छित पाठ को पकड़ने के लिए एक नियमित अभिव्यक्ति के बाद।
मुझे आशा है कि यह दिलचस्प और/या शैक्षिक था।
* काम नहीं दिख रहा है * कोई समस्या नहीं है –
sidenote: आपको 'लाइन' 'लाइन' – miku
नाम देना चाहिए, कृपया जिस पाठ को आप मिलान करने का प्रयास कर रहे हैं उसे पोस्ट करें और (यदि संभव हो) परिणाम जो आप उम्मीद करते हैं। – Mike