Saturday 15 February 2014

regex - Tcl regexp parts of this string -


  [22.06.2013 23:23:41 यूटीसी] - [& amp; nbsp; & amp; nbsp; ; Nbsp; PRE & amp; nbsp; & amp; nbsp; & amp; nbsp;] - [& amp; nbsp; एंड amp; nbsp; एंड amp; nbsp; & amp; nbsp; & amp; nbsp; & lt; a href = "? अनुभाग = 0 दिन "शीर्षक =" केवल 0 दिन दिखाएं "gt; 0DAY & lt; / a & gt; & amp; nbsp; & amp; nbsp; & amp; nbsp; & amp; nbsp; & amp; nbsp; & amp; nbsp; - [ & Lt; a href = "? खोज = एमिन्ससमples + सेक्सी + मेलोडी + वॉल्यूप + 2 + मिडी + 6581" & gt; एमीन्सैमल्स। एक्सी। मेलोडी। वोल्। 2। एमडीआई -6581 & lt; / a & gt; ] - & lt; b & gt; [2.30 एमबी] & lt; / b & gt; - & lt; b & gt; [1 एफ] & lt; / b & gt; - & lt; span शैली = "फ़ॉन्ट-वजन: बोल्ड;" & gt; [& lt; A href = "डाउनलोड / अमिन्सामल्स। एक्सी। मेलोडी। V.2.2.MIDI-6581.रार" शीर्षक = "एमिन्सामल्स। एक्सी। मेलोडी। वोल्। 2। एमडीआई-6581.र" & gt; डाउनलोड & lt; / a & gt; ]   

मैं उस डेटा को पकड़ना चाहता हूं जो इस तरह दिखाता है। << p>

  [22.06.2013 23:23:41 यूटीसी] - [पूर्व] - - [0 दिन] - [अमिन्सामल्स। एक्सी। मेलोडी। वोल्। 2। एमडीआई -6581] - [2.30 एमबी] - [1 एफ] - [डाउनलोड]   

लेकिन आईएम यह बिल्कुल निश्चित नहीं है कि मैं यह कैसे कर सकता हूं, मैं सभी को हड़पने के लिए प्रबंधन कर सकता हूं। अमिन्सामल्स। एक्सी। मैलॉडी। वोल्। 2। एमडीआई-6581.र

मैं इसे टीसीएल के भीतर करना चाहता हूं < P> यहाँ है जो मैं वर्तमान में मिला है।

  पकड़ {सेट http [:: http :: geturl http://www.prelist.ws -timeout 15000]} त्रुटि अगर { स्ट्रिंग मैच "* त्रुटि *" $ त्रुटि]} {"कनेक्ट त्रुटि!" ; वापसी 0} अगर {[स्ट्रिंग मैच "* टाइमआउट *" $ त्रुटि]} {"समय समाप्त!" डालता है; वापसी 0} सेट करें html [:: http: data [split $ http "\ n"]] regsub -all "& amp; amp; $ Html {\ & amp;} html रेग्यूब -सभी "& amp; बार;" $ Html {*} html रेग्यूब -सभी "& amp; nbsp;" $ Html {} html रेग्यूब -सभी- nocase "& amp; # 215;" $ Html "x" html रेग्यूब -सभी- nocase "& lt;" $ Html "& lt;" Html रेग्यूब -सभी- nocase "& amp; जी;" $ Html "& gt;" Html रेग्यूब -सभी "& gt;" यदि {{string match "* title *"] "$ html" "html regsub -all" & lt; tt "$ html" "html foreach line $ html {अगर {[string match" * SHOW * "$ line]} {continue} $ Line]} {regexp-nocase - {title = "(। *?) & Gt;} $ पंक्ति - & gt; सभी लाइन रेग्यूब -सभी -नोकेश" शीर्षक = "$ पंक्ति {} पंक्ति रेग्यूब -सभी- nocase" डाउनलोड करें "$ पंक्ति {} रेखा regsub -all-nocase" \ "& lt; / a" $ line {} रेखा regsub -all-nocase "\" मुक्त "$ पंक्ति {} पंक्ति regsub -all -nocase" \ "" $ line {} लाइन रेग्यूब -सभी- nocase "\\\ [" $ line {} लाइन रेग्यूब -सभी- nocase "& lt; शीर्षक" $ line {} पंक्ति regsub -all-nocase "\\\] & lt; / title" $ रेखा {} पंक्ति "$ पंक्ति"}}    

यह आसानी से किया जा सकता है Xpath:

  #! / Usr / bin / tclsh पैकेज की आवश्यकता है tdom set fp [open "input.txt" r] सेट html [read $ fp] close $ fp set doc [dom parse -html $ html] सेट रूट [$ doc documentElement] set itemNodes [ $ Doc selectNodes {// div [@ id = "list"] / tt / small}] foreach itemNode $ itemNodes {डालता है "[$ itemNode asText]"}   

ध्यान दें कि आप कर सकते हैं इस पद्धति के साथ प्रत्येक फ़ील्ड विभाजित करें:

  foreach itemNode $ itemNodes {सेट पंक्ति "[स्ट्रिंग ट्रिम [$ itemNode asText] \ [\] \]" सेट फ़ील्ड [regexp -inline -all- {[^ [\ S] [^] [] *? \ S (? = \s * (?)] | $))} $ पंक्ति डालता है [लिंडेक्स $ फ़ील्ड 2]}    

No comments:

Post a Comment