我需要从一个RSS源中删除一些数据。
这些数据是出现在:之前,并且最好也包括:后面的空格。
例如:
Hello : Charlie想知道如何从冒号后面的内容一直删到末尾问号前面的空格。这里永远有个问号吗?
冒号和Hello会被匹配,但"Charlie said hello"不会被匹配。
感谢所有具有这种奇妙知识并抽出时间回复的人。
我需要从一个RSS源中删除一些数据。
这些数据是出现在:之前,并且最好也包括:后面的空格。
例如:
Hello : Charlie想知道如何从冒号后面的内容一直删到末尾问号前面的空格。这里永远有个问号吗?
冒号和Hello会被匹配,但"Charlie said hello"不会被匹配。
感谢所有具有这种奇妙知识并抽出时间回复的人。
使用
^[^:]+:\s*
替代
^.+:\s*
perl -le 'my $string = q{Foo : bar baz}; $string =~ s{^[^:]+:\s*}{}; print $string;'
perl -le 'my $string = q{Foo : bar: baz}; $string =~ s{^[^:]+:\s*}{}; print $string;'
perl -le 'my $string = q{Foo : bar baz}; $string =~ s{^.+:\s*}{}; print $string;'
perl -le 'my $string = q{Foo : bar: baz}; $string =~ s{^.+:\s*}{}; print $string;'
试试这个:
^[^:]+:\s?
末尾的\s?
将匹配冒号后面的空格,但不要求它。
我同意@gpojd的看法;如果负载中有冒号,则应使用负字符类来避免贪婪问题。
\s?
- .
可以匹配空格(但不包括换行符)? - Lasse Espeholt^.*:
这将匹配以下内容:
Hello :
Charlie wants to know how to delete everything behind him from behind the colon and one space in front. I will always have this question mark on the end?类似 ^.*: *
的表达式应该可以很好地工作。它匹配从行的开头到冒号及其后面的任何空格。