如何删除特定的子串?

时间:2017-01-05 15:03:24

标签: regex perl

我想知道如果使用perl正则表达式将子字符串的出现次数调整为零次或多次,是否可以从字符串中剪切子字符串?

例如:

"foo bar //baz""foo bar"都会产生"foo bar",如果有的话,会删除双斜杠后面的所有内容。

我知道使用其他方法可以很容易地实现这一点,但我很感兴趣,如果正则表达式可以使用正则表达式。

我试过($new_string) = ($string =~ /(.*?)(\/\/)*.*/) 但这不起作用。

1 个答案:

答案 0 :(得分:7)

      _____________ Matches 0 chars at position 0 ("").
     /       ______ Matches 0 chars at position 0 ("").
    /       / _____ Matches 13 chars at position 0 ("foo bar //baz").
  _/  _____/ /
 / \ /     \/\
(.*?)(\/\/)*.*

你想要什么:

( my $new_string = $string ) =~ s{//.*}{};

my $new_string = $string =~ s{//.*}{}r;            # 5.14+