2016-12-27 103 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