正则表达式之前删除所有内容然后拆分

时间:2013-09-25 20:22:26

标签: regex perl

我基本上需要提出一个正则表达式来给我下面列表中的所有KB编号。我想我需要去掉第一个[然后用逗号分割然后从每个分割中移除[xx] :.

有人能指出我正确的方向。我在perl btw工作。

“194 Hotfix(s)Instal。”[01]:982861,[02]:KB2592687,[03]:KB2425227,[04]:KB2484033,[05]:KB2488113,[06]:KB2492386,[07] ]:KB2503665,[08]:KB2505438,[09]:KB2506014,[10]:KB2506212,[11]:KB2506928,[12]:KB2507618,[13]:KB2509553,[14]:KB2510531,[15]: KB2511250,[16]:KB2511455,[17]:KB2515325,[18]:KB2518869,[19]:KB2522422,[20]:KB2529073,[21]:KB2533552,[22]:KB2536275,[23]:KB2536276, [24]:KB2539635,[25]:KB2541014,[26]:KB2544893,[27]:KB2545698,[28]:KB2547666,[29]:KB2552343,[30]:KB2556532,[31]:KB2560656,[32] ]:KB2563227,[33]:KB2564958,[34]:KB2567680,[35]:KB2570947,[36]:KB2572077,[37]:KB2574819,[38]:KB2584146,[39]:KB2585542,[40]: KB2588516,[41]:KB2603229,[42]:KB2604115,[43]:KB2607047,[44]:KB2607576,[45]:KB2608658,[46]:KB2618444,[47]:KB2618451,[48]:KB2620704, [49]:KB2620712,[50]:KB2621146,[51]:KB2621440,[52]:KB2631813,[53]:KB2633873,[54]:KB2633952,[55]:KB2636573,[56]:KB2639308,[57] ]:KB2639417,[58]:KB2640148,[59]:KB2641653,[60]:KB2641690,[61]:KB264371 9,[62]:KB2644615,[63]:KB2645640,[64]:KB2647516,[65]:KB2647518,[66]:KB2647753,[67]:KB2653956,[68]:KB2654428,[69]:KB2655992, [70]:KB2656356,[71]:KB2656373,[72]:KB2656411,[73]:KB2658846,[74]:KB2659262,[75]:KB2660075,[76]:KB2660465,[77]:KB2661254,[78] ]:KB2665364,[79]:KB2667402,[80]:KB2675157,[81]:KB2676562,[82]:KB2677070,[83]:KB2679255,[84]:KB2685811,[85]:KB2685813,[86]: KB2685939,[87]:KB2686831,[88]: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,[104]:KB2719857,[105]:KB2719985,[106]:KB2722913,[107]:KB2724197,[108]:KB2726535,[109]:KB2729094,[110]:KB2729452,[111]: KB2731771,[112]:KB2731847,[113]:KB2732059,[114]:KB2735855,[115]:KB2736233,[116]:KB2736422,[117]:KB2739159,[118]:KB2741355,[119]:KB2742599, [120]:KB2743555,[121]:KB2744842,[122]:KB2749655 ,[123]:KB2750841,[124]:KB2753842,[125]:KB2756822,[126]:KB2756921,[127]:KB2757638,[128]:KB2758857,[129]:KB2761217,[130]:KB2761226,[ 131]:KB2761451,[132]:KB2761465,[133]:KB2762895,[134]:KB2763523,[135]:KB2765809,[136]:KB2769369,[137]:KB2770660,[138]:KB2772930,[139] :KB2778344,[140]:KB2778930,[141]:KB2779030,[142]:KB2779562,[143]:KB2785220,[144]:KB2786081,[145]:KB2786400,[146]:KB2789645,[147]:KB2790113 [148]:KB2790655,[149]:KB2791765,[150]:KB2792100,[151]:KB2797052,[152]:KB2798162,[153]:KB2799494,[154]:KB2804579,[155]:KB2806748,[ [00]:KB2807986,[157]:KB2808679,[158]:KB2808735,[159]:KB2809289,[160]:KB2813170,[161]:KB2813347,[162]:KB2813430,[163]:KB2817183,[164] :KB2820197,[165]:KB2820331,[166]:KB2823324,[167]:KB2830290,[168]:KB2832414,[169]:KB2833946,[170]:KB2834140,[171]:KB2834886,[172]:KB2835361 [173]:KB2836942,[174]:KB2836943,[175]:KB2839894,[176]:KB2840149,[177]:KB2840631,[178]:KB2844286,[179]:KB2849470,[180]:KB2850851,[ 181]:KB2853 587,[182]:KB2853952,[183]​​:KB2859537,[184]:KB2861855,[185]:KB2862772,[186]:KB2862966,[187]:KB2863058,[188]:KB2868116,[189]:KB2868623, [190]:KB2870699,[191]:KB2872339,[192]:KB2876315,[193]:KB976902,[194]:KB982018“

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

perl -nE 'say join " ", /KB(\d+)/g"' file