Страница 1 из 1

Хитрий regexp

Добавлено: 2010-10-07 21:24:59
mlevel
Надо такую регулярку по которой можно выбрать значения в которых:

1) могут присутствовать только символи rwdi
2) эти символы могут отсутствовать или появляться только один раз в строке


Допустимые варианты:

Код: Выделить всё

- rwdi
- rw
- ri
- id
Недопустимые варианты:

Код: Выделить всё

- rwdik
- ww
- riri
- ids
Мучаюсь второй день, помогите пожалуйста:)

Re: Хитрий regexp

Добавлено: 2010-10-07 21:34:22
FreeBSP
(?:r|)(?:w|)(?:d|)(?:i|)
как бэ таг?

Re: Хитрий regexp

Добавлено: 2010-10-07 22:38:53
mlevel
Пропускает повторение значений....

Код: Выделить всё

- ww
- riri

Re: Хитрий regexp

Добавлено: 2010-10-08 19:02:18
FreeBSP
r{0,1}w{0,1}d{0,1}i{0,1}
?

Re: Хитрий regexp

Добавлено: 2010-10-08 19:18:06
hizel
я щитаю что эта задача не для regexp-а

Re: Хитрий regexp

Добавлено: 2010-10-08 22:12:48
FreeBSP
да лан, дядь, наверняка реально регуляром сделать
просто где то я туплю, давно не занимался ими
ТС, где работаешь с регулярами?

Re: Хитрий regexp

Добавлено: 2010-10-08 22:38:01
hizel
FreeBSP писал(а): ТС, где работаешь с регулярами?
тут телепатом не надо быть, посмотри ls -l
только почему x нет, нипанятно

Re: Хитрий regexp

Добавлено: 2010-10-08 22:40:08
FreeBSP
да я не об том откуда строка, а о том под чем работают регуляры
они ж везде, как правило, немного отличаются..

Re: Хитрий regexp

Добавлено: 2010-10-09 14:01:14
mlevel
Это регуляр для check(проверка insert/update значений) в PostgreSQL.
((md_access)::text ~ 'r{0,1}w{0,1}d{0,1}i{0,1}'::text)
Текстовое значение md_access сравнивается с regexp 'r{0,1}w{0,1}d{0,1}i{0,1}'
Но все равно повторения пропускает, а остальное нет...

Re: Хитрий regexp

Добавлено: 2010-10-10 2:09:30
lamp
кажись вот оно:

Код: Выделить всё

/^([rwdi])(?!\1)(?:([rwdi])(?!\1)(?!\2))?(?:([rwdi])(?!\1)(?!\2)(?!\3))?(?:([rwdi])(?!\1)(?!\2)(?!\3)(?!\4))?$/