Regex Replace Очистка строки от нежелательных символов - PullRequest
0 голосов
/ 21 января 2011

Я создаю метод для преобразования заголовков страниц в хорошую строку для использования перезаписи URL. Пример: "Последние новости", будет "последние новости"

Проблема в том, что названия страниц находятся вне моего контроля, и некоторые из них похожи на следующие: Новости футбола и регби! В идеале это стало бы футбольным регби-новостями.

Я проделал некоторую работу, чтобы донести это до футбола - & - rugby-news!

Существует ли возможное регулярное выражение для определения нежелательных символов и дополнительного символа "-"?

В основном мне нужны цифры и буквы, разделенные одним '-'.

У меня есть только базовые знания о регулярных выражениях, и лучшее, что я мог придумать, было:

[^a-z0-9-]

Я не уверен, что я достаточно ясен здесь.

Ответы [ 2 ]

1 голос
/ 21 января 2011

Этот 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
1 голос
/ 21 января 2011

Попробуйте 'заменить все' на что-то вроде этого.

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

Замените совпадения тире.

Альтернативное регулярное выражение:

[^a-zA-Z0-9]+

Этотбудет избегать многократных штрихов, если рядом с другими нежелательными символами будет найден сам штрих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...