【发布时间】:2015-04-13 22:49:37
【问题描述】:
我正在尝试匹配在 Perl 中看起来像这样的字符串
%TRMMHDT128F422F115<SEP>SOJEZBM12A6D4FEA96<SEP>Thursday<SEP>A Hole In The World (Album Version) [etc]
字符串的末尾并不总是有括号和/或方括号。我想要做的是去除歌曲周围的所有绒毛,最终去除歌曲中的所有标点符号。我现在可以用这些语句分两遍来做到这一点:
$line =~ s/.*>//;
$line =~ s/(\(.*)|(\[.*)//;
我想一次完成所有这些,但是如果我在第一个表达式之后和第二个表达式之前添加一个管道|,它不会删除括号或方括号中的任何内容。像这样:
$line =~ s/.*>|(\(.*)|(\[.*)//;
现在在正则表达式测试器中,这匹配了我希望它匹配的所有内容,但它并没有替代所有内容。
【问题讨论】: