我想知道如果使用perl正则表达式将子字符串的出现次数调整为零次或多次,是否可以从字符串中剪切子字符串?
例如:
"foo bar //baz"
和"foo bar"
都会产生"foo bar"
,如果有的话,会删除双斜杠后面的所有内容。
我知道使用其他方法可以很容易地实现这一点,但我很感兴趣,如果正则表达式可以使用正则表达式。
我试过($new_string) = ($string =~ /(.*?)(\/\/)*.*/)
但这不起作用。
答案 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+