आप उप-अभिव्यक्ति के लिए कब्जा करने कोष्ठक का उपयोग करने की आवश्यकता से मेल खाता है:
match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1];
मैच सूचकांक 0 पर पूरे मैच के साथ एक सरणी वापस आ जाएगी, सभी उप अभिव्यक्ति कैप्चर क्रम में सरणी में जोड़ दिया जाएगा वे मिलान नहीं हुआ। इस मामले में, सूचकांक 1
में \/pdf\/.*?\.pdf
से मिलान करने वाला अनुभाग शामिल है।
प्रयास करें और बस
.*?
अगर यह बहुत मोटे तौर पर मिलान है की तुलना में अपने रेगुलर एक्सप्रेशन से और सटीक बनाएं। उदाहरण के लिए:
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1];
[^"]+?
lazily वर्णों की स्ट्रिंग है कि दोहरे उद्धरण वर्ण नहीं हैं से मेल खाएगी। इस उद्धरण के भीतर रहने के लिए मैच तक सीमित कर देगा, तो मैच निम्नलिखित स्ट्रिंग में बहुत व्यापक नहीं होगा, उदाहरण के लिए:
<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a>
स्रोत
2010-03-11 12:59:57
यह मैं /pdf/filename.pdf देता है, लेकिन मैं प्राप्त करने की आवश्यकता < a href = "somedirecrories/pdf/filename.pdf" लेकिन मैं HTML कोड से लिंक को अलग कर रहा हूं और दस्तावेज़ में अन्य href के ऊपर संदर्भ हैं - इसलिए मुझे लगता है कि मुझे किसी प्रकार के पैटर्न मिलान की आवश्यकता है –
@Gerald: क्षमा करें, मुझे एहसास नहीं हुआ कि आपका मतलब क्या है। मैंने अपना जवाब अपडेट कर लिया है। –
बिल्कुल सही जो मैं खोज रहा था - धन्यवाद एंडी –