मेरे पास कई पाठ फ़ाइलें हैं, कुछ एकल पंक्तियों का पहला उदाहरण निकालने की आवश्यकता है, कुछ लगातार पंक्तियाँ और पंक्तियों के बीच कुछ पाठ:
दस्तावेज़ १
दस्तावेज़ का शीर्षक
(टीओडी)रिलीज 3
संस्करण 2लेखकों
थॉमस ई. थॉमस, जॉन एल. जॉन,
फ्रेड ए। फ्रेड, सैंड्रा के। सैंड्राकंपनी ए पता
अधिक लेखक
पेज 3
इस उदाहरण से मुझे "दस्तावेज़ का शीर्षक (टीओडी)", 3, 2, और लेखकों और पृष्ठ 3 के बीच के सभी पाठों की आवश्यकता है, समावेशी नहीं। मैं धीरे-धीरे सीख रहा हूं इसलिए मेरे पास कुछ कोड स्निपेट हैं, लेकिन वे काफी दूर नहीं जाते हैं। मुझे एक मैच मिल सकता है लेकिन पहले उदाहरण और उदाहरण और अगली पंक्ति की आवश्यकता है:
File.open("sample.txt").each do |line|
if line[/Document/]
puts line
मैंने मध्यवर्ती पाठ प्राप्त करने का प्रयास किया है लेकिन यह बिल्कुल सही नहीं है:
File.open("sample.txt").each do |line|
while gets
print if [/Authors/../Page/]
end
अगर आपको लगता है कि यह पूछने में बहुत अधिक मदद है तो मैं संकेत/पॉइंटर्स की सराहना करता हूं।
1 उत्तर
फ़ाइल लाइन को लाइन से पढ़ने के बजाय मुझे लगता है कि पूरी चीज को पढ़ना आसान होगा, फिर इसे रेगेक्स के साथ खोजें। कुछ इस तरह:
File.open("sample.txt","r") do |f|
text = f.read
# everything between Document and Authors
m1 = text.match(/Document(.*)Authors/m)
# everything between Authors and Page
m2 = text.match(/Authors(.*)Page/m)
end
m
रेगेक्स संशोधक का उपयोग करना चाहेंगे (यह .
न्यूलाइन वर्णों से मेल खाता है)। रूबी में w
मान्य रेगेक्स विकल्प नहीं है।
case
स्टेटमेंट का उपयोग करके तय करें कि आपको क्या देखना है और क्या करना है, और स्टेट वेरिएबल को एक नए मान में बदलने के लिए ( शायद एक प्रतीक) जब वह कुछ और देखता है।