के साथ खोजें और प्रतिस्थापित करें मेरे पास एक MySQL कॉलम में एक टेक्स्ट ब्लॉब फ़ील्ड है जिसमें HTML शामिल है। मुझे कुछ मार्कअप बदलना है, इसलिए मैंने सोचा कि मैं इसे एक रूबी स्क्रिप्ट में करूँगा। रूबी यहां अप्रासंगिक है, लेकिन इसके साथ जवाब देखना अच्छा लगेगा। मार्कअप निम्नलिखित की तरह दिखता है:रूबी रेगेक्स
<h5>foo</h5>
<table>
<tbody>
</tbody>
</table>
<h5>bar</h5>
<table>
<tbody>
</tbody>
</table>
<h5>meow</h5>
<table>
<tbody>
</tbody>
</table>
मैं जबकि अकेले स्ट्रिंग के बाकी छोड़ने <h2>something_else</h2>
करने के लिए बस प्रत्येक पाठ की पहली <h5>foo</h5>
ब्लॉक बदलने की जरूरत है।
रूबी का उपयोग करके उचित पीसीआरई रेगेक्स नहीं लग रहा है।
मैं आपको HTML के लिए regex का उपयोग करने के बजाय एक HTML पार्सर का उपयोग करने पर विचार करने के लिए आग्रह करता हूं। जैसा कि यह कहा गया है [कई] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags), [कई] (http: // stackoverflow। कॉम/प्रश्न/590747/नियमित-अभिव्यक्ति-से-पार्स-एचटीएमएल-क्यों-नहीं), [कई] (http://stackoverflow.com/questions/6751105/why-its-not-possible-to-use -regex-to-parse-html-xml-a-formal-explanation-in-la? lq = 1) इससे पहले, रेगेक्स पार्सर्स HTML को सटीक रूप से पार्स करने में असमर्थ हैं। –
विशेष रूप से, मैं अपने एचटीएमएल को लोड करने के लिए [नोकोगिरी] (http://nokogiri.org) का उपयोग करने की सलाह देता हूं, इसे कुशलतापूर्वक उपयोग करता हूं, और फिर परिणाम निकाल देता हूं। – Phrogz