我需要从RSS源中删除一些数据。
这是在:之前出现的所有内容,也最好是在之后出现的空间:
示例:
你好:查理想要知道如何从冒号后面和前面的一个空格中删除身后的一切。我最后总会有这个问号吗?
哪里:和你好匹配但不是“查理打招呼”
感谢所有掌握这些知识的人,并花时间回复。
答案 0 :(得分:6)
使用
^[^:]+:\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;'
答案 1 :(得分:2)
试试这个:
^[^:]+:\s?
尾随\s?
将匹配冒号后面的空格,但不需要它。
我同意 @gpojd ;如果有效载荷中有冒号,你应该使用负字符类来避免贪婪问题。
答案 2 :(得分:1)
您可以使用:
^.*:
匹配:
Hello :
查理想知道如何从冒号后面和前面的一个空格中删除身后的一切。我最后总会有这个问号吗?
答案 3 :(得分:0)
像^.*: *
这样的东西应该运作良好。这从行的开头到冒号以及后面的任何空格都匹配。