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

Регулярные выражения при автозамене (удаление)

Добавлено: 09 окт 2014 14:15
Dukez
Для вот такой строчки в прайсе: Матрас American Style Денвер 1600x2000 (Queen Plus size)
пишу следующее выражение в автозамене и галочку удалить: [0-9]{3}([0]{1})x[0-9]{3}([0]{1})
рег1.jpg
рег1.jpg (84.07 КБ) 5153 просмотра
получаю результат: 16x20

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

при [0-9]{3}([0]{1})x[0-9]{3}([0]{1}) получается тоже самое

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 09 окт 2014 14:46
support
А проблема в чем? Это РВ дает результат 00, если вы создаете автозамену удаления РВ то бишь "00" то и получаете вместо 1600-16, а вместо 2000 - 20.

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 10 окт 2014 00:13
Dukez
Данное РВ: [0-9]{3}([0]{1})x[0-9]{3}([0]{1}) указывает на определенные знаки-цифры в ряду цифр при определенном условии.
То есть регулярным выражением указывают определенные ноли на определенном месте.
160(0)х190(0) - те что в скобках, а не какие-то другие.
1) Вначале должно быть три цифры "[0-9]{3}" . Не две и не одна, а три.
2) После которых должен быть обязательно ноль "([0]{1})" , который и берется, потому что значение в скобках.
3) после которого х и только латиницей, так как для русского надо писать другое рег. выражение с использование русского х
4) после должно идти три цифры "[0-9]{3}" . Не две и не одна, а три.
5) после этих трех цифр должен быть обязательно ноль "([0]{1})" , который и берется, потому что значение в скобках.
В моем понимании при таких выставленных настройках удаление через автозамену должно быть удаление тех элементов, которые указаны в рег. выражении в скобках. То есть при значении 1600х1900 оставаться должны 160х190

Следуя описанной вами логике сначала происходит выделение значения 00, а потом оно через "найти и заменить" удаляется.
Если все работает через "Найти и заменить" пробую выставить рег. выражение через замену по вашей логике. Убираю галочку с У и в поле "Чем заменить?" ставлю 0.
рег2.jpg
рег2.jpg (29.49 КБ) 5147 просмотров
При исходных значениях 1600х1900 получаю значение 0
По какой логике и как это работает я вообще боюсь предугадать.

При составленном рег. выражении [0-9]{3}([0]{1})x[0-9]{3}([0]{1})|[0-9]{3}x[0-9]{3}([0]{1})|[0-9]{3}([0]{1})x[0-9]{3} происходит тоже самое. То значок или "|" не работает и выполняется только первое условие.

Суть проблемы - мне нужно удалить только те 0 и только в тех значениях, которые подпадают под мои определенные условия РВ. В столбце со значениями у меня есть габариты и в мм и в см. Есть и 1600х1900, есть и 160х190. Этот весь беспорядок я хочу привести к общему виду.
Но тут надо учитывать что варианты 800х1900, 1900х800, 700х700 это могут быть в мм, а вот 120х190, 200х200 уже скорее всего в мм. Это все я могу задать в рег. выражении, но взять просто "00" и заменить его на "0" я не могу. Потому что для 100х100 (а тут явно уже см, а не мм) это правило заменит на 10х10

П.С. Уже не первый раз в разных условиях пытался использовать РВ в автозамене, но так и не смог, так как логика работы абсолютно не понятна. Если возможно двоякое трактование условий, то может их где-то надо подробно расписать, а не заставлять пользователей догадываться?

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

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 14 окт 2014 15:21
Ixenon
Как вариант в поле "Заменить на" можно использовать подстановойные знаки типа "$1", где с помощью цифры задается порядковый номер выражения в скобках.
Т.е. если к строке "1600х1900" применить выражение в поле "Найти" которого написано "([0-9]{3})([0]{1})(x)([0-9]{3})([0]{1})", а в поле "Заменить на" которого написано "$1$3$4", то в результате должно получиться "160х190"

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 16 окт 2014 09:07
tkachenkoser
интересная темка. Удалось задействовать "у" (удаление) регулярного выражения? У меня пока некак (
Не знаю как в автозамене, а в ручную замене $1 также не работают.

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 16 окт 2014 14:47
Ixenon
tkachenkoser писал(а):Не знаю как в автозамене, а в ручную замене $1 также не работают.
Все татары кроме я, да? :D

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 16 окт 2014 14:53
tkachenkoser
Ixenon писал(а):
tkachenkoser писал(а):Не знаю как в автозамене, а в ручную замене $1 также не работают.
Все татары кроме я, да? :D
бывает у меня )

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 12 дек 2014 16:51
tkachenkoser
Поднимаю темку, т.к. проблема не решена, а очень актуальна.
Если использовать автозамену с регулярным выражением, то все работает.. Пример что регулярное выражение верное и работает на скрине:
DrlNvYzuyV1X2P.jpg
DrlNvYzuyV1X2P.jpg (411.83 КБ) 5036 просмотров
А удаление найденного РВ, ни таким способом
2D2P4KOehJq5k23.jpg
2D2P4KOehJq5k23.jpg (325.77 КБ) 5036 просмотров
Ни таким - не работает.
3D2P4KOehJqOP23.jpg
3D2P4KOehJqOP23.jpg (329.82 КБ) 5036 просмотров

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 12 дек 2014 17:06
Ixenon
Как вариант, можно на пробел заменить, только вроде там галочку в поле "УП" нужно ставить.
И в конце возможно потребуется еще одно регулярное выражение заменяющее один или более пробельных символов, на знак пробела, правда уже не помню точно.
Это конечно не решение данной проблеммы, а всего лишь как вариант, которым можно пользоваться, пока проблемма не решена.

Re: Регулярные выражения при автозамене (удаление)

Добавлено: 12 дек 2014 18:20
tkachenkoser
я обычно делаю иначе, заменяю на /////, а потом после добавления товара делаю поиск с удалением.
Об проблеме пишу давно, т.к что при автозамене РВ она криво работает, что при обычной замене