使用perl删除除第一个字母外的字符串中的所有大写字母

时间:2015-01-25 16:44:53

标签: regex string perl

我有一个单词列表导入到数组中。许多词都以大写字母开头。很多单词可能以大写字母开头,这没关系。我想删除所有出现的大写字母,除非它是单词的第一个字母。

use strict;

my $filter_file = "filter.txt";
my $filtered_file = "filtered.txt";
my $file_data= "";


#### Place file contents into an array ####
open (RESULTS, $filter_file) or die "Unable to open file: $filter_file\n$!";
my @file_data;
@file_data = <RESULTS>;
close(RESULTS);

#### Search the array ####
for(@file_data) {
# attempting different regular expression's 
   s/[[:lower:]]\K[[:upper:]].*//;
   s/([[:lower:]])[[:upper:]].*/$1/;
    }

#### Save filtered data to file ###
open (FILE, ">> $filtered_file") || die "Unable to open file: $filtered_file\n$!";
print FILE @file_data;
close($filtered_file);

1 个答案:

答案 0 :(得分:1)

你对一个单词的定义是什么?如果你只是看信件,你差不多了。你希望大写字母跟随任何字母,而不只是小写字母。

$ perl -E'$_ = "ABcDe"; s/\pL\K\p{Lu}+//g; say'
Ace