我想在我只有 2 个单词的行上应用正则表达式。我的文件看起来像这样,括号中的单词之间有可变数量的空格:
政客姓名:(何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔);政客姓名:(托尼·布莱尔 | 托尼·布莱尔 | 托尼·布莱尔 | 托尼·布莱尔);
我想有一个输出:
政客姓名:(托尼·布莱尔 | 托尼·布莱尔 | 托尼·布莱尔 | 托尼·布莱尔 |布莱尔·托尼 | 布莱尔·托尼);
我的代码在每一行上应用正则表达式,我得到如下错误输出:
政客姓名:(何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔 | 何塞·玛丽亚·阿兹纳尔 |玛丽亚·何塞 | 玛丽亚·何塞);
这是我的代码:
use strict;
use warnings;
use Data::Dumper;
use utf8;
open(IN, $ARGV[0]) or die "Can't read file $ARGV[0]\n";
while (my $line=<IN>)
{
my ($pol,$value) = split(/:/, $line);
warn Dumper \$pol;
chomp($value);
$value=~ s/[ ]+/ /g;
$value=~ s/\);//g;
my $n;
$n = $1 if ($value =~ /\((.+?)\|/);
$n=~ m/(\w*)\s(\w*)/g;
my $swapname="$2 $1";
warn Dumper \$swapname;
print "$pol: $value | $swapname );\n";
}
close(IN);
我需要做什么来停止处理三字名称?