2010-10-04 164 views
2

我需要從RSS提要中刪除一些數據。正則表達式匹配冒號前的所有內容?

它出現之前的一切一,也最好,只是後出現的空間

例子:

您好:查理想知道如何刪除他後面的一切從冒號後面和前面的一個空間。我會一直有這個問號?

凡:和Hello會匹配,但不是「查理說你好」

感謝所有誰擁有這個美好的知識,需要時間來回答。

+0

我看到大膽。內容HTML? – 2010-10-04 19:47:14

+0

當你說「一切之前的一切:」時,你是指* *之前的所有內容,或者是最後一個? – 2010-10-04 20:45:21

回答

2

試試這個:

^[^:]+:\s? 

尾隨\s?將匹配冒號後面的空間,但並不需要它。

我同意@gpojd;如果有效載荷中有冒號,則應使用否定字符類來避免貪婪問題。

+1

爲什麼'\ s?' - '.'會匹配空格(不是換行符)。 – 2010-10-04 19:44:45

+0

@lasseepeholt,你是對的。我更新了。 – Brad 2010-10-04 19:47:41

1

你可以使用: ^.*:

這符合:

Hello :查理想知道如何從結腸,並在前面有一個空格後面刪除他後面的一切。我會一直有這個問號?

0

類似^.*: *應該很好。這匹配從排隊的開始到冒號以及之後的任何空格。

+0

真棒你是男人!非常感謝你。 – Mark 2010-10-04 19:50:33

5

使用

^[^:]+:\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;' 
相關問題