ruby - Regexp matches and captures in pry, rubular, but not from script -


अतः, मेरे पास एक regexp है जो मैंने रूबलुलर और सीएलआई (" pry मणि)। यह कस्टम Apache लॉग प्रारूप को पार्स करता है। जब मैं इसके लिए इनपुट को फ़ीड करता हूं, तो यह अपेक्षित काम करता है (जैसे $ ~ आबादी है।) रुबुलर इनपुट के विभिन्न लाइनों के लिए सही मिलान और समूह की रिपोर्ट करता है। जब कोड से नीचे चलाया जाता है, तो कोई मेल नहीं खाता।

मैंने भी String.chomp! और \ n चरित्र के साथ गड़बड़ करने की कोशिश की है,

रुब्यूलर लिंक: मैं मैच को फेंक रहा था, लेकिन विभिन्न क्रमपरिवर्तनों का कोई असर नहीं पड़ा।

मुझे यकीन है कि यह कुछ और अनुभवी रूबिस्टिक पर कुछ प्रकाश डाल सकता है।

यह प्रासंगिक कोड, regex, और इनपुट है - और पहले से धन्यवाद:

  log_regex =% r {(? & Lt; ip & gt; (([0- 9] {1 , 3} \।) {3} [0- 9] {1,3})) \ s- \ s (? & Lt; src_ip & gt;। *) - \ s (? & Lt; तारीख & gt; \ [। * \] ) \ S (? & Lt; url & gt; "। +") \ S (? & Lt; प्रतिक्रिया & gt; \ d {3}) \ s (? & Lt; लंबाई & gt; \ d +) \ s (? & Lt; referer & gt; "। ") \ S (? & Lt; useragent & gt;"। * ") \ S (? & Lt; होस्ट & gt;। *)? / Ix} लॉगफाइल = ARGV [0] def process_log (लॉग_रेग x, लॉगफाइल) IO.foreach (लॉगफाइल, 'आर') करें | रेखा | line.chomp! Log_regex.match (रेखा) करें | एम | नमूना इनपुट:  
  20 9 .123.123.123 - - [05 / जुलाई / माह] [मी / यातायात / 2012: 11: 02: 01 -0700] "GET /url/mma/rss2.0.xml HTTP / 1.1" 301 0 "-" "फीडबर्नर / 1.0 (http://www.FeedBurner.com)" xml कहीं और .com    

आप शायद अपने regex की परिभाषा पर एक नजदीकी नज़र रखना चाहते हैं। % r को बंद करने के बजाए अपने झंडे पैटर्न की परिभाषा के अंदर हैं:

 % r {... / ix}   

होना चाहिए:

 % r {...} आईसीबी से   

 <कोड> आईआरबी (मुख्य): 001: 0 & gt; % R {foo / ix} / foo / ix / irb (मुख्य): 002: 0 & gt; % R {foo} ix / foo / ix irb (मुख्य): 003: 0 & gt; % R {^ foo $} ix = ~ 'foo' 0 irb (मुख्य): 004: 0 & gt; % R {^ foo / ix $} = ~ 'foo' nil   

दोनों प्राइवेट और आईआरबी उपरोक्त परीक्षणों के लिए समान परिणाम वापस आते हैं।

Comments