Saturday, 15 January 2011

regex - Perforce commands Regular Expressions -


मेरे पास कमांड एक्जीक्यूशन की लाइनें निम्नानुसार हैं:

  2806 I deep Sd_bordeaux 117: 02: 40 IDLE कोई नहीं 2807 मैं गहरी sd_bordeaux 17:02:40 आईडीले कोई नहीं 2808 मैं गहरी sd_coddeaux 117: 02: 40 IDLE सभी 2809 मैं rahul sd_coddeaux 117: 02: 40 IDLE सभी  
< P> मैंने कमांड को चलाने के लिए कमांड को चलाने के लिए कमांड को चलाने के लिए लिखा है और उसे सरणी @ लाइनों में संग्रहित करने और निर्दिष्ट परिस्थितियों को प्राप्त करने के लिए regex का उपयोग करना है। लेकिन मुझे वांछित परिणाम नहीं मिल रहा है

<पूर्व> मेरी $ command = qx | p4 मॉनिटर शो -अल | | मेरी $ kill_id; मेरे @lines = विभाजन ("\ n", $ आदेश); मेरी $ पंक्ति (@lines) के लिए {अगले अगर नहीं $ लाइन = ~ / (\ d +) \ s + /; मेरी $ आईडी = $ 1; अगर ($ line = ~ / sd_bordeaux \ s + (\ d +): \ d +: \ d + \ s + / और $ पंक्ति = ~ / आईडीएल \ s + none $ /) {my $ hours = $ 1; प्रिंट "$ घंटे"; प्रिंट "\ n"; }

}

मुझे कोई त्रुटि मिल रही है

  आरंभिक मान का उपयोग $ घंटे की स्ट्रिंग में ./p4.pl < / कोड>  

मुझे "2806" और "2807" संख्या $ आईडी के रूप में प्राप्त करने में दिलचस्पी है और पहले अंक "117" & amp; "17" के रूप में $ घंटे।

कृपया कुछ मदद कर सकते हैं जहां मैं गलत हो रहा हूं। धन्यवाद।

$ 1 इसमें सबसे हाल ही में सफल होने वाले पहले कब्जा से मिलान किया गया था Regex match।

जब आप त्रुटि प्राप्त करते हैं, तो सबसे हाल ही में सफल मिलान / IDLE \ s + none $ / के खिलाफ था, जिसमें कोई कैप्चर नहीं है।

निम्नलिखित समतुल्य होगा:

  यदि ($ line = ~ / sd_bordeaux \ s + (\ d +): \ d +: \ d + \ s + /) {my $ hours = $ 1; अगर ($ पंक्ति = ~ / आईडीईई \ s + कोई भी $ /) {प्रिंट "$ घंटे \ n"; }}  

लेकिन ऐसा लगता है कि आपको निम्न की आवश्यकता है:

  यदि ($ line = ~ / sd_bordeaux \ s + (\ d +): \ D +: \ d + \ s + IDLE \ s + कोई भी $ /) {my $ hours = $ 1; प्रिंट "$ घंटे \ n"; }  

यह समस्या बताता है और इसे कैसे हल किया जाए, लेकिन गैरी एक अधिक पढ़ें।


No comments:

Post a Comment