正则表达式匹配冒号前出现的所有内容?

Mar*_*ark 2 regex

我需要从RSS源中删除一些数据.

这是在a之前出现的所有内容:并且最好是在以下之后出现的空间:

例:

你好:查理想知道如何从冒号后面和前面的一个空格中删除他身后的一切.我最后总会有这个问号吗?

哪里:和你好匹配,但不是"查理打招呼"

感谢所有拥有这些精彩知识并花时间回复的人.

gpo*_*ojd 6

使用

^[^:]+:\s*
Run Code Online (Sandbox Code Playgroud)

代替

^.+:\s*
Run Code Online (Sandbox Code Playgroud)

这是它工作的一个例子:

perl -le 'my $string = q{Foo : bar baz}; $string =~ s{^[^:]+:\s*}{}; print $string;'
Run Code Online (Sandbox Code Playgroud)

我建议第一个在第二个以避免贪婪问题:

perl -le 'my $string = q{Foo : bar: baz}; $string =~ s{^[^:]+:\s*}{}; print $string;'
Run Code Online (Sandbox Code Playgroud)

要看到我提到的贪婪问题:

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;'
Run Code Online (Sandbox Code Playgroud)