2008-09-29 14 views
31

पूर्व: <a><strike>example data in here</strike></a>REGEX: किसी विशिष्ट शब्द जब तक सब कुछ बना रहे

मैं एक टैग के अंदर सब कुछ चाहते हैं, अंत

/<a>([^<]*)<\/a>/ 

यह काम करता है जब वहाँ <a> टैग के भीतर कोई अतिरिक्त टैग कर रहे हैं, लेकिन क्या होगा अगर?

मैं जानना चाहता हूं कि क्या आप इसे के बजाय [^</a>] तक सबकुछ पकड़ने के लिए कह सकते हैं।

/<a>(.*)<\/a>/ के साथ ऐसा करना अच्छा काम नहीं करता है। कभी-कभी मुझे <a> टैग में सबकुछ मिलता है और दूसरी बार मुझे उस कॉल में कई लाइनें मिलती हैं।

उत्तर

78
/<a>(.*?)<\/a>/ 

काम करना चाहिए। द? यह आलसी बनाता है, इसलिए यह </a> भाग से मेल खाने से पहले जितना संभव हो उतना छोटा हो जाता है। लेकिन उपयोग कर रहे हैं। इसका मतलब यह होगा कि जब तक यह </a> पाता है तब तक यह सब कुछ मेल खाता है। आप पंक्तियों में मैच के लिए सक्षम होना चाहते हैं, तो आप preg_match

/<a>(.*?)<\/a>/s 

अंत में "एस" के साथ "एक पंक्ति" मोड, जिसका अर्थ में नियमित अभिव्यक्ति डालता है, तो निम्न का उपयोग कर सकते हैं। चरित्र नई लाइनों सहित सभी पात्रों से मेल खाता है। other useful modifiers

+0

हां, यह मेरी प्रतिक्रिया से काफी बेहतर है। यह काम। इस –

+1

जब तक आप एक एक अंदर है काम करेंगे: और इस regex समस्या मिलान प्रसिद्ध कोष्ठकों के समान है। परंपरागत regex के साथ इस समस्या का कोई समाधान नहीं है। आप एक सादे पुराने ढेर के साथ बेहतर हो। – wilhelmtell

+7

एचटीएमएल के किस गड़बड़ संस्करण में किसी अन्य टैग के भीतर होता है? – Kibbee

संबंधित मुद्दे