2012-08-16 31 views
0

點我使用這個例子:與<br />使用正則表達式替換的perl

New Zealand cyclist Jack Bauer didn't know it during the Olympic road race, but there was a scantily-clad Kiwi 'snow angel' above him. http://www.stuff.co.nz/sport/olympics/7374497/Near-naked-snow-angel-over-cycle-road-race

我想句號後添加<br />標籤,但不是在HTTP鏈接。就在句子結尾。

目前我使用:

$full_story = $read_story->[0]{story_text}; 
$full_story =~ s/(\D)\.(\D)/<br \/><br \/>/i; 

使用此代碼它添加<br />himm被刪除。

最終結果:

New Zealand cyclist Jack Bauer didn't know it during the Olympic road race, but there was a scantily-clad Kiwi 'snow angel' above him. 

http://www.stuff.co.nz/sport/olympics/7374497/Near-naked-snow-angel-over-cycle-road-race 

我在做什麼錯?

回答

3

你可以做一個搜索和替換的///「

給出的字符串:

my $string = 'The quick brown fox. Jumps over the lazy dog.'; 

你可以這樣做:

$string =~ s/\./<br \/>/g 

's'表示您正在進行搜索和替換。

之間的前兩個'/ /'是你正在尋找的。在這種情況下,它是一個點(。),但你必須用\來轉義它,因爲正則表達式中的點是一個通配符。

下一個'/ /'是您要替換的文本。在這種情況下,它是<br />。因爲這是一個特殊的字符,所以你必須在這裏轉義'/'。

最後,最後的'g'標誌意味着您在整個字符串中進行搜索和替換。 所以在我的例子中,輸出將是:

print $string; 
# The quick brown fox<br /> Jumps over the lazy dog<br /> 

既然你不想更換點的字符串中,你可以簡單的在不同的變量,將它們分開,這樣它會更容易操控。

0
$full_story =~ s/(.*?)\.(.*?)/$1<br \/><br \/>$2/i; 
+0

嗨,如何重複搜索。它只替換了第一句,對不起,我在正則表達式中很糟糕。 – jbcedge 2012-08-16 21:34:37

+0

添加「g」修飾符,例如''.../ig''。 – 2012-08-16 21:35:35

+0

謝謝,但它有一種方法可以從http標籤中獲取它,因爲它會破壞http鏈接:http:// www。 東西。 co。 nz/sport/olympics/7374497 /近乎裸露的雪天使過週期公路賽 – jbcedge 2012-08-16 21:38:24

0

使用index建立字符串的第一部分的長度最多爲任何http鏈接。然後使用substr作爲左值來替換該部分中的所有全站。

此代碼顯示了這個想法。爲了測試目的,我添加了一些額外的完整功能。

use strict; 
use warnings; 

my $str = q{New Zealand cyclist Jack Bauer. didn't know it during the Olympic. road race, but there was a scantily-clad Kiwi 'snow angel' above him.http://www.stuff.co.nz/sport/olympics/7374497/Near-naked-snow-angel-over-cycle-road-race}; 

my $index = index lc $str, 'http'; 
$index = length $str if $index < 0; 
substr($str, 0, $index) =~ s|\.|.<br/>\n<br/>\n|g; 

print $str; 

輸出

New Zealand cyclist Jack Bauer.<br/> 
<br/> 
didn't know it during the Olympic.<br/> 
<br/> 
road race, but there was a scantily-clad Kiwi 'snow angel' above him.<br/> 
<br/> 
http://www.stuff.co.nz/sport/olympics/7374497/Near-naked-snow-angel-over-cycle-road-race