अतः, मेरे पास एक regexp है जो मैंने रूबलुलर और सीएलआई (" मैंने भी रुब्यूलर लिंक: मैं मैच को फेंक रहा था, लेकिन विभिन्न क्रमपरिवर्तनों का कोई असर नहीं पड़ा। मुझे यकीन है कि यह कुछ और अनुभवी रूबिस्टिक पर कुछ प्रकाश डाल सकता है। यह प्रासंगिक कोड, regex, और इनपुट है - और पहले से धन्यवाद: आप शायद अपने regex की परिभाषा पर एक नजदीकी नज़र रखना चाहते हैं। होना चाहिए: दोनों प्राइवेट और आईआरबी उपरोक्त परीक्षणों के लिए समान परिणाम वापस आते हैं। pry मणि)। यह कस्टम Apache लॉग प्रारूप को पार्स करता है। जब मैं इसके लिए इनपुट को फ़ीड करता हूं, तो यह अपेक्षित काम करता है (जैसे
$ ~ आबादी है।) रुबुलर इनपुट के विभिन्न लाइनों के लिए सही मिलान और समूह की रिपोर्ट करता है। जब कोड से नीचे चलाया जाता है, तो कोई मेल नहीं खाता।
String.chomp! और
\ n चरित्र के साथ गड़बड़ करने की कोशिश की है,
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
% 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
Post a Comment