匹配以分号分隔并以'ase anydigit'结尾的单词

时间:2016-12-27 06:42:47

标签: regex perl

任何人都可以帮助我使用正则表达式在单词结尾处获得ase的单词。

我的文字是这样的:

  

血管加压素V1a受体;血管加压素V1b受体;血管加压素V2   受体;前列腺素G / H合成酶1;前列腺素G / H合酶2

现在我只想要以Prostaglandin G/H synthase 1; Prostaglandin G/H synthase 2结尾的ase

我希望查询是通用的,因为我将使用运行此7000个记录。如示例

中所述,它应该在结尾之前将单词与ase分开

2 个答案:

答案 0 :(得分:0)

尝试使用分号后找到并捕获所有内容的(?<=;\s)[^;]+ase\s\d+,直到&#34; ase [space] [number]&#34;

Demo here

答案 1 :(得分:0)

Perlish解决方案:

  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