匹配大写单词

时间:2019-03-08 13:07:05

标签: regex perl

如何在Perl中使用正则表达式轻松匹配以下单词?

示例

AFSAS245F gdsgasdg(agadsg,asdgasdg,.ASFH(gasdgsadg))

ASG23XLG hasdg(dagad,SgAdsga,.FG(haha))

预期输出:- [仅匹配第一个大写单词]

AFSAS245F

ASG23XLG

2 个答案:

答案 0 :(得分:0)

这不是您问题的答案(因此,如果人们认为适当,将其删除是可以的),但我认为向您展示如何提出该问题将非常有用。

我正在尝试从下面的输入中过滤数据。我正在尝试提取第一个由空格分隔的单词,该单词仅由大写字母和数字组成。另外,我需要忽略不包含(的行。

这是一个测试程序。

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

while (<DATA>) {
  # This is where I need help. This regex obviously doesn't work
  print if /[A-Z]\s+/;
}

__DATA__
AFSAS245F gdsgasdg (agadsg,asdgasdg, .ASFH(gasdgsadg) )
ASG23XLG hasdg (dagad, SgAdsga, .FG(haha))

我期望的输出是:

AFSAS245F
ASG23XLG

((还值得指出的是,这并不是特别好的测试数据。您应该在其中添加没有(的行-因为这行测试了需求的重要部分。 )

答案 1 :(得分:0)

  print "$1\n" if /^([A-Z0-9]+)\s+.*\(/;

如果该行以该词开头,后跟空格和一个(在后面某处,则此字符仅打印第一个词(后跟换行符)。