2011-01-21 70 views
0

我正在創建一種方法將頁面標題修改爲使用URL重寫的良好字符串。 例:「最新消息」,將是「最新新聞」正則表達式替換從不需要的字符中清理字符串

的問題是網頁標題是我的控制的,有些是類似以下內容: 足球&橄欖球新聞!理想情況下,這將成爲足球橄欖球新聞。

我已經做了一些工作,讓這個足球-& -rugby-news!

是否有一個可能的正則表達式來識別不需要的字符和額外的' - '?

基本上,我需要由一個' - '分隔的數字和字母。

我只有正則表達式的基本知識,我能想出的最好的是:

[^a-z0-9-] 

我不知道如果我在這兒清楚。

+0

注: 「&」 字符也是在URL中保留字符。 – 2011-01-21 10:25:16

+0

是的,我知道,基本上我想刪除任何不是字母,數字或破折號的字符 – 2011-01-21 10:28:51

回答

1

嘗試用這樣的東西'全部替換'。

[^a-zA-Z0-9\\-]+ 

用短劃線替換匹配。

替代正則表達式:

[^a-zA-Z0-9]+ 

這人會避免多次短線如果一個破折號本身附近發現其他不想要的字符。

1

這個Perl腳本也可以做你正在尋找的東西。當然,你不得不通過其他方式給它提供字符串,而不僅僅是對它進行硬編碼;例如,我只是把它放在那裏。

#!/usr/bin/perl 

use strict; 
use warnings; 

my $string = "Football & Rugby News!"; 
$string = lc($string); # lowercase 

my $allowed = qr/a-z0-9-\s/; # all permitted characters 

$string =~ s/[^$allowed]//g; # remove all characters that are NOT in $allowed 
$string =~ s/\s+/-/g; # replace all kinds of whitespace with '-' 

print "$string\n"; 

打印

football-rugby-news