2011-01-21 68 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