除了Perl中的关键字之外,我如何从字符串中删除所有内容?

时间:2012-04-02 16:28:21

标签: regex string perl grep string-parsing

我有一个这样的字符串:

component.kw1_tap/rt  (path/to/file1/kw1)  (path/to/file2/kw2)

我可以删除不需要的字符并生成一个干净的字符串,如下所示:

component kw1 tap rt  path to file1 kw1  path to file2 kw2

现在我想删除除kw1和kw2之外的所有内容,所以我的最终字符串应为:

kw1 kw2

谢谢。

编辑:字符串可以改变,关键字的位置(kw)也可以改变。

1 个答案:

答案 0 :(得分:2)

这是一个很长的镜头,因为您不清楚kw1kw2的特殊内容是否适用于字符串中的其他字词。

也许这适合你?

use 5.12.0;

my $s = 'component.kw1_tap/rt  (path/to/file1/kw1)  (path/to/file2/kw2)';

my @keywords = $s =~ m|([^/]+?)\s*\)|g;

say for @keywords;

<强>输出

kw1
kw2

修改

如果必须就地编辑字符串很重要,则此代码使用相同的技术

use 5.12.0;

my $s = 'component.kw1_tap/rt  (path/to/file1/kw1)  (path/to/file2/kw2)';

$s = join ' ', $s =~ m|([^/]+?)\s*\)|g;

say $s;

<强>输出

kw1 kw2