С Новым годом! Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210

Извлечь подстроку в слове после определенного слова

17.05.2018, 12:03. Показов 2533. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл в котором много строк:

dbdfbdbdfbdfbdffg
Nubm version (90967096055) fghgjghmkujkik
tghkjkfgbjdfn
dfgnfgmnhmuj,j,uyyyttrrr

Как в файле 1.txt найти строку с version и вывести в другой файл 2.txt то, что после нее только в скобках?

Т.е. итог: 90967096055
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.05.2018, 12:03
Ответы с готовыми решениями:

Поиск определенного слова в строке и замена определенного символа после этого слова
Представим что у нас есть следующая строка: "Дядя Петя 10 раз ударил дядю Васю, но дядя Вася оказался не трусом и дал сдачи в виде 1...

Извлечь текст до определенного символа и извлечь из кавычек
Ребята, помогите, пожалуйста, с формулой. есть много текста в ячейках, в каждом тексте есть разные фразы и разной длины, а после...

Парсинг текста: вытащить подстроку в скобках после ключевого слова
Есть например стока: 'ergfijeroigjergioerTEXT{Hello world}erhryjhrgerfer' Как можно вытащить текст 'Hello world'? Поясню немного по...

3
Покинул форум
3700 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.05.2018, 17:06
Perl
1
perl -nlE "say $1 if /version \((\d+)\)/" file.txt > 2.txt
0
 Аватар для volodin661
6671 / 2263 / 346
Регистрация: 10.12.2013
Сообщений: 7,828
18.05.2018, 05:24
Greg, явилась мне любопытная идея.
( безотносительно того, чего на самом деле хочет TC; думаю, мы этого и не узнаем )

вот такая строка
Code
1
"some text; some text-2; version( 1234567 ) sometext3  variant("A6", 0.45, 0x41)"
на что похож текст version(12341234) или variant("A6", 0.45, 0x41) ?
Правильно, на вызов функции с аргументами.

Так зачем тогда мне разбирать всю эту байду с аргументами самостоятельно, если у Perl есть функция eval, вот пусть она и разбирает.
Мне надо просто захватить рег. выражением целиком этот кусок, похожий на вызов функции, и отдать его eval.

Итак, простое регулярное выражение /( \w+ \s* \( [^)]* \)/x справится с задачей захвата куска, похожего на вызов функции.

eval вызовет эту функцию, но ведь функция-то не определена !!

На этот случай у Perl имеется предопределённое название подпрограммы AUTOLOAD,
которая и будет вызвана, если Perl повстречает неопределённую подпрограмму.
Наше дело - просто написать подпрограмму с таким именем и желаемым функционалом:
Perl
1
2
3
4
5
sub AUTOLOAD {
    $"  = ' # ';
    our $AUTOLOAD;
    print "имя: $AUTOLOAD; аргументы: @_\n";
}
В скалярную переменную $AUTOLOAD Perl заботливо подсунет для нас имя этой неопределённой подпрограммы.

Итак:
Bash
1
perl -C -Mutf8 -ne 'sub AUTOLOAD{$"=" # ";our$AUTOLOAD;print"$AUTOLOAD: @_\n"}   eval for /(\w+\s*\([^)]*\))/g'
для тестовой строки
Code
1
some text version ( 1234567 ) sometext2  variant("A6", 0.45e-2, 0x41, "\x41") sometxt4 ЧМ_по_хоккею( "просрали")
получим:
Code
1
2
3
имя: main::version; аргументы: 1234567
имя: main::variant; аргументы: A6 # 0.0045 # 65 # A
имя: main::ЧМ_по_хоккею; аргументы: просрали
Добавлено через 10 минут
sorry, не ту версию вставил; вот такой вызов из bash:

Bash
1
perl -C -Mutf8 -lne 'sub AUTOLOAD{$"=" # ";our$AUTOLOAD;print"имя: $AUTOLOAD; аргументы: @_"}  eval for /(\w+\s*\([^)]*\)\)+)/g'
1
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
18.05.2018, 09:01  [ТС]
А как это написать не запуская из командной строки, а в самом файле perl.pl ?

И простите за наглость, еще вариант не между скобок, а, например, от " до \ ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2018, 09:01
Помогаю со студенческими работами здесь

Программа, которая после каждого слова записывает в файл количество символов в этом слове, а после дописать количество слов
Помогите написать программу. Заранее спасибо. Создать текстовый файл с произвольным содержимым. Написать программу, которая после...

Чтение строки после определенного слова
Здравствуйте! Столкнулся со следующей проблемой... Допустим, у меня есть в буфере строка: 4145223 102596 102F6154 FB25EAF5 ...

Обрезать строку до и после определенного слова
Как обрезать строку до 100 знаков до и после слова, например: ...текст текст текст слово текст текст.... Обрезаю текст следующим...

Удаление текста после определённого слова
Всем привет! У меня возник вопрос. Как удалить текст после определённого слова, к примеру есть такая ссылка. ...

Выведение текста после определенного слова
Доброго времени суток возник вопрос как вывести из списка всё что находится после слова 'ответ' ? res=


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru