正则表达式替换从不需要的字符清除字符串

时间:2011-01-21 10:20:43

标签: regex string url-rewriting replace

我正在创建一种方法来将页面标题修改为一个好的字符串,以便使用URL重写。 示例:“最新消息”,将是“最新消息”

问题是页面标题不受我的控制,有些类似于以下内容: 足球&橄榄球新闻!理想情况下,这将成为橄榄球橄榄球新闻。

我已经做了一些工作来实现足球 - & -rugby-news!

是否有可能的正则表达式来识别那里不需要的字符和额外的' - '?

基本上,我需要用单个' - '分隔的数字和字母。

我只掌握正则表达式的基本知识,我能想到的最好的是:

[^a-z0-9-]

我不确定我在这里是否足够清楚。

2 个答案:

答案 0 :(得分:1)

尝试用这样的东西'替换所有'。

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

用短划线替换比赛。

替代正则表达式:

[^a-zA-Z0-9]+

如果在其他不需要的字符附近找到破折号本身,则会避免多次破折号。

答案 1 :(得分: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