如何替换perl正则表达式中的字符串

时间:2012-01-23 18:40:08

标签: regex perl inline

有没有办法从正则表达式中替换字符?

像这样:

find x | xargs perl -pi -e 's/(as dasd asd)/replace(" ","",$1)/'

来自OP的评论

code find x | xargs perl -pi -e 's/work_search=1\/ttype=2\/tag=(.*?)">(.*?)<\/a>/work\/\L$1\E\" rel=\"follow\">$2<\/a>/g'

在这种情况下,我希望将$ 1的空格替换为_

2 个答案:

答案 0 :(得分:2)

您可以使用嵌套替换:

$ echo 'foo bar baz' | perl -wpE's/(\w+ \w+ \w+)/ $1 =~ s# ##gr /e'
foobarbaz

请注意,/r修饰符需要perl v5.14。对于早期版本,请使用:

$ echo 'foo bar baz' | perl -wpE's/(\w+ \w+ \w+)/my $x=$1; $x=~s# ##g; $x/e'
foobarbaz

另请注意,您需要为内部替换使用不同的分隔符。正如您所见,我使用了#

答案 1 :(得分:0)

据我了解,您想要删除空格。这是对的吗?

你可以这样做:

s/(as) (dasd) (asd)/$1$2$3/