2014-07-16 66 views
0

我有這將有條目正則表達式:匹配多發IDS但不完全相同

33745 Neeraj庫馬爾33743的文件中:授權Web服務33743個WADL代問題

我想以這樣的方式來使用正則表達式它不應該匹配相同的身份證兩次,即它可以匹配倍數,但不相同 以上情況下,它應該說33745的計數爲1和33743爲1

我目前的代碼結果爲33745計數爲1和33743 as 2

foreach $line (@file_list) { 

     while ($line =~ m/(\d{4,}[,|:])/g){ 
     @temp = split(/[:|,]/, $1); 
     push @work_items, $temp[0]; 
             } 
           } 

my %count; 
map { $count{$_}++ } @work_items; 

回答

0

獨特的匹配:反向引用在排除模式

要檢索所有唯一的ID,這就夠了:

@result = $subject =~ m/(\d+)(?!.*\1)/g; 

說明

  • (\d+)捕獲的括號該ID爲第1組
  • 負lookehead (?!.*\1)斷言它不可能匹配任何字符,然後將ID按組1

參考捕獲

+0

讓我知道這是否工作或你需要調整。 :) – zx81

+0

我的文件內容如下:(----)Manish Garg <[email protected]> 74163:V2.0.1_I3_SIT:KeyStroke Logger解密文件的鍵盤按鍵顯示與CCM時間相差4小時。 - 74163:KeyStroke Logger解密文件的擊鍵時間與CCM時間相差4小時。 2014/07/04 這給出的輸出爲:updated_workitem值>「74163」 Count>「2」 我希望count的值爲1,以尋找id的唯一出現: – user3616128

+0

在[this demo](http ://regex101.com/r/nJ8cJ8/7)你可以看到每個唯一的號碼是匹配的。但是,正則表達式不知道「什麼是ID」,如果你想讓它更具體,讓我知道是什麼使它特別。 – zx81

相關問題