2013-09-25 86 views
-3

我基本上需要拿出一個正則表達式來給我所有下面列表中的KB數字。我想我需要去掉第一個[然後在逗號分割,然後刪除[xx]:從每個分割。正則表達式刪除之前的所有內容,然後拆分

有人可以指出我在正確的方向。我在perl btw工作。安裝了194個修補程序,[01]:982861,[02]:KB2592687,[03]:KB2425227,[04]:KB2484033,[05]:KB2488113,[06]:KB2492386,[012] 07]:KB2503665,[08]:KB2505438,[09]:KB2506014,[10]:KB2506212,[11]:KB2506928,[12]:KB2507618,[13]:KB2509553,[14]:KB2510531, :KB2511250,[16]:KB2511455,[17]:KB2515325,[18]:KB2518869,[19]:KB2522422,[20]:KB2529073,[21]:KB2533552,[22]:KB2536275, ,[25]:KB2539635,[25]:KB2541014,[26]:KB2544893,[27]:KB2545698,[28]:KB2547666,[29]:KB2552343,[30]:KB2556532,[31]:KB2560656, 32:KB2563227,KB2564958,KB2567680,KB2570947,KB2572077,KB2574819,KB2584146,KB2585542, KB2588516,KB2603229,KB2604115,KB2607047,KB2607576,KB2608658, ,[49]:KB2620712,[50]:KB2621146,[51]:KB2621440,[52]:KB2631813,[53]:KB2633873,[54]:K B2633952,[55]:KB2636573,KB2639308,[57]:KB2639417,[58]:KB2640148,[59]:KB2641653,[60]:KB2641690,[61]:KB2643719, [63]:KB2645640,[64]:KB2647516,[65]:KB2647518,[66]:KB2647753,[67]:KB2653956,[68]:KB2654428,[69]:KB2655992,[70]:KB2656356,[71] ] KB2656373,KB2656411,KB2658846,KB2659262,KB2660075,KB2660465,KB2661254,KB2665364,[79] KB2667402,[80]:KB2675157,[81]:KB2676562,[82]:KB2677070,[83]:KB2679255,[84]:KB2685811,[85]:KB2685813,86:KB2685939, KB2688338,[89]:KB2690533,[90]:KB2691442,[91]:KB2695962,[92]:KB2698365,[93]:KB2699779,[94]:KB2699988,[95]:KB2705219,[96] ]:KB2709162,[97]:KB2709630,[98]:KB2709715,[99]:KB2709981,[100]:KB2712808,[101]:KB2718523,[102]:KB2718704,103:KB2719177, KB2719857,[105]:KB2719985,[106]:KB2722913,[107]:KB2724197,[108]:KB2726535,[109]:KB2729094,[110]:KB2729452,[111]:KB2731771, [113]:KB2732059,[114]:KB2735855,[115]:KB2736233 ,KB2736422,[117]:KB2739159,[118]:KB2741355,[119]:KB2742599,[120]:KB2743555,[121]:KB2744842,KB2749655,[123]:KB2750841, 124]:KB2753842,[125]:KB2756822,[126]:KB2756921,[127]:KB2757638,[128]:KB2758857,[129] KB2761217,KB2761226,KB2761451, :KB2761465,[133]:KB2762895,[134]:KB2763523,[135]:KB2765809,[136]:KB2769369,[137]:KB2770660,[138]:KB2772930,[139]:KB2778344, ,KB2779030,[142]:KB2779562,[143]:KB2785220,[144]:KB2786081,[145]:KB2786400,[146]:KB2789645,[147]:KB2790113,[148]:KB2790655, :KB2791765,[150]:KB2792100,[151]:KB2797052,[152]:KB2798162,[153]:KB2799494,[154]:KB2804579,[155]:KB2806748,[156]:KB2807986, :KB2808679,[158]:KB2808735,[159]:KB2809289,[160]:KB2813170,[161]:KB2813347,[162]:KB2813430,[163]:KB2817183,[164]:KB2820197, ,KB2823324,[167]:KB2830290,[168]:KB2832414,[169]:KB2833946,[170]:KB2834140,[171]:KB2834886,[KB2835941],KB2836942, 174]:KB2836 :KB2840149,[177]:KB2840631,[178]:KB2844286,[179]:KB2849470,[180]:KB2850851,[181]:KB2853587,[182]:KB2853952, :KB2859537,[184]:KB2861855,[185]:KB2862772,[186]:KB2862966,[187]:KB2863058,[188]:KB2868116,[189]:KB2868623,[190]:KB2870699,[191] ]:KB2872339,[192]:KB2876315,[193]:KB976902,[194]:KB982018"

回答

2

如果你並不需要一行代碼的解決方案,那就是:

#!/usr/bin/perl 
use warnings; 
use strict; 

my $t="194 Hotfix(s) Installed.,[01]: 982861,[02]: KB259245 ...."; 
my @numbers=$t=~/KB(\d+)/g; 
print join("\n",@numbers); 

請注意,由於缺少KB前綴,第一個數字[01]將不會與此正則表達式匹配,因爲我猜這是您的文章中的錯字。否則更改匹配正則表達式爲:

my @numbers=$t=~/(\d+)(?:\,|\z)/g; 
+0

不幸的是,它不是一個錯字,我很高興你注意到它。它是windows上systeminfo.exe的輸出。那個特定的機器返回這個reuslt。 –

1
perl -nE 'say join " ", /KB(\d+)/g"' file 
相關問題