Как сделать пунктуацию, строчные буквы, пробел и дефис строки с помощью регулярного выражения? - PullRequest
2 голосов
/ 12 декабря 2010

Если у меня есть такая строка

Newsflash: The Big(!) Brown Dog's Brother (T.J.) Ate The Small Blue Egg

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

newsflash-the-big-brown-dogs-brother-tj-ate-the-small-blue-egg

Другими словами, пунктуация отбрасывается и пробелы заменяютсяс дефисами.

Ответы [ 3 ]

4 голосов
/ 12 декабря 2010

Звучит так, будто вы хотите создать «плагин для URL» - например, URL-версию заголовка статьи.Это означает, что вы хотите убедиться, что удалили все возможные не-URL-дружественные символы, а не только несколько.Вы можете сделать это следующим образом (по порядку):

Удалите все непубличные нечисловые непробельные символы с помощью:
Замена регулярного выражения [^A-Za-z0-9 ] пустой строкой "".

Заменить все пробелы тире на:
Замена регулярного выражения \s+ на строку "-".

Строчные буквыстрока:
Java s = s.toLowerCase();
JavaScript s = s.toLowerCase();
C # s = s.ToLowerCase();
Perl $s = lc($s);
Python s = s.lower()
PHP $s = strtolower($s);
Рубин s = s.downcase

1 голос
/ 12 декабря 2010

Замените регулярное выражение [\s-]+ на "-", затем замените [^\w-] на "".

Затем вызовите ToLowerCase или эквивалентный.

В JavaScript:

var s = "Newsflash: The Big(!) Brown Dog's Brother (T.J.) Ate The Small Blue Egg";
alert(s.replace(/[\s+-]/g, '-').replace(/[^\w-]/g, '').toLowerCase());
0 голосов
/ 12 декабря 2010

Замените /\W+/ на '-', который заменит все несловарные символы тире.

Затем сверните тире, заменив /-+/ на '-'.

Затем строчная строка - чистые регулярные выражения не могут этого сделать.Вы не сказали, какой язык вы используете, поэтому я не могу привести вам пример, но ваш язык может иметь вызов String.toLowercase () или tr/// (например, tr/A-Z/a-z/ в Perl).

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