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

Помогите с регулярными выражениями

Добавлено: 11 сен 2011 16:57
tkachenkoser
Хочу создать несколько дочерних характеристик, но пока все печально.
Первое. Массив значений
1000 ВА / 500 ВТ
1000 ВА / 600 ВТ
1200 ВА / 720 ВТ
420 ВА / 260 ВТ
и тд
на отдельные хар-ки: Мощность в ВА и Мощность в ВТ


Второе
Массив
1280x1024
1280x1024, 1600x1200 (интерполированное)
1280x720
1600x1200, 2560x1920 (интерполированное)
1600x1200, 2560x2048 (интерполированное)
1920x1080
640x480
640x480, 1024x768 (интерполированное)
разделить на разрешение фактическое и интерполяционное.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 09:13
support
Здравствуйте, в чем именно заключается сложность?
Какие выражения (формулы) Вы уже составили?
Про составления регулярных выражений можно прочесть здесь.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 11:12
tkachenkoser
Если самый просто вариант, то ([0-9]{3}+)

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 11:24
support
попробуйте:
([0-9]{3} [а-я]{2})
для:
420 ВА
и:
([0-9]{4} [а-я]{2})
для:
1000 ВА
1200 ВА

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 11:48
tkachenkoser
но это же должно быть на автомате, должна быть формула обработающий как 3 значные числа, так и 4х значные.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 11:49
support
Это должно быть две формулы. Так как условия разные.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 12:08
tkachenkoser
НО задействовать же 2 формулы там нельзя, только одну.

ПОчему не воспользоваться
+ - Соответствует предыдущему символу или части выражения, повторяющимся один или более раз. Аналогично параметру {1,}.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 12:41
support
Попробуйте составить формулу Для Мощность ВА:

ЕСЛИ(СОДЕРЖИТ('ЧТО ИСКАТЬ', {ЗначениеХарактеристики})>0, 'НА ЧТО ЗАМЕНЯТЬ', {ЗначениеХарактеристики})
ЧТО ИСКАТЬ-это текст или часть текста которые нужно найти для дальнейшего преобразования.
НА ЧТО ЗАМЕНЯТЬ-это текст в который превратится то что было найдено.
Например:
ЕСЛИ(СОДЕРЖИТ('1000 ВА', {ЗначениеХарактеристики})>0, '1000 ВА', {ЗначениеХарактеристики})

Нужно создать формулу вида:
ЕСЛИ(СОДЕРЖИТ('1000 ВА', {ЗначениеХарактеристики})>0, '1000 ВА', ЕСЛИ(СОДЕРЖИТ('1200 ВА', {ЗначениеХарактеристики})>0, '1200 ВА', ЕСЛИ(СОДЕРЖИТ('420 ВА', {ЗначениеХарактеристики})>0, '420 ВА', ЕСЛИ(СОДЕРЖИТ('8888 ВА', {ЗначениеХарактеристики})>0, '8888 ВА',{ЗначениеХарактеристики}))))

Таким образом значения отделяться.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 13:03
tkachenkoser
ну это метод кривых программистов, у меня этих значений более 15.
Хорошо, а как лучше поступить с
Массив
1280x1024
1280x1024, 1600x1200 (интерполированное)
1280x720
1600x1200, 2560x1920 (интерполированное)
1600x1200, 2560x2048 (интерполированное)
1920x1080
640x480
640x480, 1024x768 (интерполированное)
разделить на разрешение фактическое и интерполяционное.

Re: Помогите с регулярными выражениями

Добавлено: 12 сен 2011 14:07
TechAdmin
Мощность, Вт
Регулярное выражение:

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

[a-z ]([0-9]{3,} [a-y]{2}) 

dynamic_feature_capacity_in_WATTS.png
dynamic_feature_capacity_in_WATTS.png (34.32КБ)5629 просмотров

Мощность, ВА
Регулярное выражение:

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

([0-9]{3,} [а-я]{2})

dynamic_feature_capacity_in_VA.png
dynamic_feature_capacity_in_VA.png (32.93КБ)5629 просмотров

Результат:
dynamic_features_result.png
dynamic_features_result.png (66.1КБ)5629 просмотров

Разрешение фактическое
Регулярное выражение:

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

([0-9]{3,4}[x][0-9]{3,4})

dynamic_feature_actual_resolution.png
dynamic_feature_actual_resolution.png (33.87КБ)5629 просмотров

Разрешение интерполяционное
Регулярное выражение:

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

[a-z ]([0-9]{3,4}[x][0-9]{3,4})

dynamic_feature_resolution_interpolated.png
dynamic_feature_resolution_interpolated.png (35.72КБ)5629 просмотров