| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > Шаблон для метасимволов |
| Автор: Marlik 21.5.2010, 19:00 |
| Доброго всем. Есть строка ^-59869856jkjgspofijgjspogjr начинается с ^- как Вы заметили. Требуется вырезать цифры. Цифры вырезаю, но получается такой вариант: ^-59869856 Как только не пробовал, первые два метасимвола никак не хотят выделяться .+ - не работает \W - не работает уже как только не пробовал, может кто-то встречался с такой проблемой, спасибо. |
| Автор: Pfailed 22.5.2010, 12:01 |
| Покажите как вырезаете то. |
| Автор: Marlik 22.5.2010, 15:34 | ||
Там на самом деле несколько строк, нужен вариант регекспа что-бы подошел ко всем, это типа тестового задания, мне оно не надо но дело принципа:
Вот второй вариант никак не решается, мозг сломал. |
| Автор: rumax 31.5.2010, 07:55 | ||||||
Решается довольно просто:
З.Ы. $txt - значение $str, $str2 или $str3 |
| Автор: Marlik 9.6.2010, 19:38 |
| Спасибо конечно, но у Вас также не работает патерн со строкой в этой переменной $str2... |
| Автор: rumax 10.6.2010, 08:09 | ||||
Действительно, странно. А вот если строку взять в одинарных кавычках, то работает. ну или так переменные объявить
|
| Автор: dva300 12.6.2010, 14:37 | ||||
ели я правильно понял то нужно вытащить дату и время ? тогда так
|
| Автор: Marlik 12.6.2010, 19:38 | ||
Да, поняли почти правильно, дату, время, и все что после Comment:. но все равно если
то результат тот-же, никакой. Нужно найти регэксп который подойдет для всех трех вариантов. Но все равно спасибо, за участие. |
| Автор: dva300 13.6.2010, 13:07 | ||||||||
хм... проверил еще раз... у меня работает без проблем. добавил чтобы еще и после Comment выбирал выполняет нормально и для переменных и если из файла читать. рассказывайте тогда полностью процедуру как делаете. может у вас строки все же другие ?
вывод следующий
|
| Автор: Marlik 14.6.2010, 08:36 |
| У Вас ошибка со второй переменной $str2, Вы знак доллара - $ заменили амперсандом - & Мой вариант: my $str2 = "^-06/02/2002*$21:55:45"; Ваш вариант: my $str2 = "^-06/02/2002*&21:55:45"; Поэтому и не работает у меня, спасибо. |
| Автор: dva300 14.6.2010, 13:56 | ||
хм... действительно аномалия какая-то но суть от этого не меняется при инициализации переменных используйте '' (апострофы) а не "" (кавычки) с файлом работает и так. |
| Автор: rumax 14.6.2010, 14:24 | ||||
С апострофами и мой код работает. А если кавычки использовать, то будет ругаться на переменные необъявленные |
| Автор: dva300 14.6.2010, 14:43 | ||||||
я что-то не пойму. не хотите апострофы использовать тогда экранируйте символ $ через \$ в ручную. или это задача на выносливость мозга ? |
| Автор: Marlik 14.6.2010, 16:23 |
| Нельзя менять, кавычки на апострофы, и не нужно читать из файла. Есть эти три строки, и надо придумать один регэксп для всех трех. Я так понимаю что в строках, использованы метасимволы, их надо как-то обойти. Меня интересует такая инструкция: \Q - Вплоть до команды \E все последующие метасимволы становятся обычными символами... А вот как это применить не пробовал, и не знаю... |
| Автор: dva300 14.6.2010, 17:03 | ||
я когда был маленький то работал у одного из провайдеров админом. так там наш главный админ при приеме на работу новеньких давал им задачу следующего характера - "дается заведомо не рабочий модем с каким-либо дефектом и ставилась задача завести его в модемный пул." сколько мы тогда гипотез наслушались..... |
| Автор: Marlik 14.6.2010, 19:20 |
| Это всего лишь строка, думаю вариант с апострофами самый оптимальный, что-бы мозг не вынести... |