我正在使用这个例子:
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 />
,但m
中的him
将被删除。
最终结果:
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
我做错了什么?
答案 0 :(得分:3)
你可以搜索并替换's ///'
给出字符串:
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 />
由于您不想替换字符串中的点,您可以简单地将它们分隔在不同的变量中,以便更容易操作。
答案 1 :(得分:0)
$full_story =~ s/(.*?)\.(.*?)/$1<br \/><br \/>$2/i;
答案 2 :(得分: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