如何在Perl中使用正则表达式轻松匹配以下单词?
示例
AFSAS245F gdsgasdg(agadsg,asdgasdg,.ASFH(gasdgsadg))
ASG23XLG hasdg(dagad,SgAdsga,.FG(haha))
预期输出:- [仅匹配第一个大写单词]
AFSAS245F
ASG23XLG
答案 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+.*\(/;
如果该行以该词开头,后跟空格和一个(在后面某处,则此字符仅打印第一个词(后跟换行符)。