2016-12-27 44 views
-1

任何人都可以幫助我在單詞末尾使用正則表達式獲取單詞ase匹配單詞以分號分隔,並以'ase anydigit'結尾

我的文字是這樣的:

加壓素V1A受體;加壓素V1b受體;加壓素V2 受體;前列腺素G/H合酶1;前列腺素G/H合成酶2

現在我只想要Prostaglandin G/H synthase 1; Prostaglandin G/H synthase 2ase結尾。

我希望查詢是通用的,因爲我將使用7000條記錄運行此查詢。應該分離單詞,如本例中提到

+1

*前列腺素G/H合成酶2 *與尾號,不是「ase」。此外,告訴我們你試過 – TheLostMind

+0

正確的是,它不是以「ase」結尾..多數民衆贊成在我之前和之後想要的話。我試過: – Devi

+0

我試過了,其中包括:。* \ w。\ w。; * \。*。\ w *(ase)\ w *。*但它給了我早些時候的詞 – Devi

回答

0

Perlish的在結束前ASE解決方案:

  1. 拆分單詞;分離器
  2. 應用正則表達式的每個單詞和打印,如果它的標準
  3. 匹配

樣品的編號:

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

my @words = split/;/, <DATA>; 
foreach my $word (@words){ 
    if ($word =~ /ase \d+$/){ 
     print $word;  
    } 
} 

__DATA__ 
Vasopressin V1a receptor; Vasopressin V1b receptor; Vasopressin V2 receptor; Prostaglandin G/H synthase 1; Prostaglandin G/H synthase 2 

Demo

+0

@ Chankey Pathak:非常感謝您的解決方案。這也是一個很好的解決方案。也感謝大家給你寶貴的時間。 :) – Devi

0

嘗試(?<=;\s)[^;]+ase\s\d+它發現和捕獲分號後一切直到「ASE [空格] [數字]」

Demo here

+0

我可以建議'(?<=;)'而不是文字分號嗎?通過這種方式,你可以保持你的一切 – Bohemian

+1

並刪除組括號:'(?<=; \ s)[^;] + ase \ s \ d +'。 *整個*匹配是目標 - 無需組 – Bohemian

+0

謝謝波希米亞人.. – Devi

相關問題