需要正则表达式从字符串中删除easycode

时间:2013-09-05 06:58:00

标签: regex perl

我需要正则表达式从Perl代码中删除easycode。

我正在使用此正则表达式,但这不正确

$message =~ s/<.+?>|&[a-z]+;|\[.+?\]/ /g;

此正则表达式删除[.+?\]之间的所有代码。

如果有人可以提供帮助,请告诉我

2 个答案:

答案 0 :(得分:0)

嗯,是的,这就是\[.+?\]部分的匹配。只需删除该部分(以及前面的交替运算符):

$message =~ s/<.+?>|&[a-z]+;/ /gi;

(我也认为你的正则表达式应该不区分大小写)

答案 1 :(得分:0)

#!/usr/bin/perl
use strict;
use warnings;

my @test = ("[ nikon 400]", "[ nikon \$400 ]", "[quick_sort]", "[CODE]", "[QUOTE]", "[OTHER STUFF]", "[ test123!%&/(){} ]");

foreach my $line (@test){
    $line =~ s/<.+?>|&[a-z]+;|\[[A-Z]+\]/ /g;
    print "$line\n"
};

输出:

[ nikon 400]
[ nikon $400 ]
[quick_sort]


[OTHER STUFF]
[ test123!%&/(){} ]

我可以假设这真的是你想要的。是否要将[]之间的多个条目合并为[quick sort],将更改为[quick_sort]?这不是一个大问题。但是你必须向我们提供有关文本的更多信息(括号之间),这样我们才能构建一个合适的正则表达式,而不仅仅是一个贪婪的野兽。