LINUX.ORG.RU

Очередной вопрос по регулярному выражению

 


0

1
^[^,][-,_\w\d]+[^,]$

Такое регулярное выражение не учитывает один момент: «слова» из разрешенного набора символов могут отделяться двумя и более запятыми, что в свою очередь нарушает логику программы (в дальнейшем эти данные разделяются по «,» на массив, и если не сделать проверку, то он будет содержать пустые элементы).

★★

Последнее исправление: Razip (всего исправлений: 1)

Ты лучше опиши, что надо сделать. Потому что регулярное выражение проще написать, чем прочитать исправить.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Данные нужно проверять на:

  • Отсутствие повторяющиеся запятых идущих подряд.
  • Отсутствие запятых в начале и/или в конце строки.
  • Отсутствие запрещенных символов в строке (разрешенные: «-», «_», «,» (только как разделитель), а также буквы и цифры).

Вроде все.

Razip ★★
() автор топика
Последнее исправление: Razip (всего исправлений: 1)

Какой ЯП? Если python, то можно сделать сперва split, потом убрать из списка пустые строки генератором. Думаю, в аналогичной скриптоте для этого инструменты тоже должны быть.

А так - лучше опиши задачу, ибо как-то непонятно, что тебе нужно сделать этим выражением. Найти строки в которых содержится одно слово и отсутствуют запятые по краям или что?

Lilly
()
Ответ на: комментарий от Lilly

PHP. Я думаю что убирать пустые строки — костыль. Лучше не пропускать такие данных дальше валидации.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

А, php, понятно, я подумал что разбор текста пишешь. Тогда регулярки выше - твой выбор.

Lilly
()
Ответ на: комментарий от kim-roader

То, что надо! Только я немного переписал:

^,|,$|,+|[^-_,\w\d]

Razip

могут отделяться двумя и более запятыми

Спасибо.

Razip ★★
() автор топика
Ответ на: комментарий от Razip

Неправильно переписал. Этот регексп должен матчить «неправильные» строки. У тебя же ,+ матчит в том числе одну запятую. Кроме того регксп /,,/ также нормально срабатывает, когда им матчишь строку с тремя и более запятыми подряд.

kim-roader ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.