![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Мне нужно сделать что бы программа вырезала из строки пробелы. Но только если они не между кавычками.
до: 1 2 345 после: 12345 до: 1 2 345 "6 7" '8 9' после: 12345"6 7"'8 9' кавычки могут быть двух типов ' и " |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
Привет!
Держи
работает для пар ковычек т.е. ' ' или " " |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Прикольно. Спасибо!
|
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
кстати она у тебя срабатывает на
'weruiy" А кавычки то разные И вот еще на умную регулярку. Надо сделать split my @mass = split(//, $str); Надо что бы эта штука разрезала строки по символам - или +. Причем эти символы НЕ ДОЛЖНЫ быть в скобках Выражение: 123+3789-378 Результат- массив: 123 + 3789 - 378 Выражение: 1+(2+3) результат-массив: 1 + (2+3) |
|||
|
||||
| nitr |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
|
||||
|
|||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
немного изменил твое выражение. Теперь она находит то что между кавычками только в том случае если открываюая кавычка такая же как закрывающая
Найдет 'shdjk', найдет "оавлд" Не найдет 'dfjkl" или "dfj' $str =~ s{((['"]).+?\2)|\s}{$1}g; просто добавил ссылку назад. А кто мне поможет со split? |
|||
|
||||
| sharq |
|
||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon,
если тебе нужно работать с математическими формулами, то советую воспользоваться алгоритмом раскрытия скобок или определения выражения. Вот пример, который позволяет распарсить выражение так, как тебе надо, только если скобок внутри скобок нет.
Можно сразу сделать так, если тебе не важен порядок следования:
Это сообщение отредактировал(а) sharq - 21.6.2006, 23:27 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||
|
|||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Вообще-то мне просто надо разрезать по -|+ только не в скобках
|
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon, вообще-то запусти первый вариант
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
не... скобки могут быть вложенные...
Вот самое умное что мне удалось сделать (?<!\()([\-|\+])(?!\)) 1 + 2 - 333 - (-) Порежет на 1 + 2 - 333 - (-) прямо как надо но если будет не (-) а например ( - ) Но все... ничего хорошнго тут получается что если скобка не вплотную к знаку то она уже ее не видит. Не увидит и (1 + 33) |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
rcdimon, в чем проблема тогда, поставь \s*
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
мне не надо \s
Там могут быть любые символы ( 2 + 34 ) например Могут быть и буквы и символы типа $@% и т.д. Вот... а ставить типа .+ Я пытался... нифига |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |