Форум программистов, компьютерный форум, киберфорум
Perl
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 16

Извлечение подстроки в переменную

19.12.2013, 21:26. Показов 1356. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.

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

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Нужно значения Content-Type, text/html, windows-1251 сохранить в переменные для дальнейшего использования с помощью регулярных выражений на Перле.
Т.е., чтобы, например, переменная $x была равна ''Content-Type", $y была равна 'text/html', f $z - 'windows-1251'


Буду очень признателен ответившим.
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2013, 21:26
Ответы с готовыми решениями:

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

Не работает извлечение подстроки
Не удается получить подстроку из переменной. Выполнение BAT доходит верно до 6 строки. С 7 по 10 строку выполняется не верно или не...

Извлечение подстроки из XML-файла
Добрый день! Необходимо из xml файла извлечь подстроку в виде &quot;J123456&quot; и передать эту подстроку какой либо переменной для дальнейшей...

6
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
19.12.2013, 22:47
lerochka_pnz, предпоследней строкой в посте спалился с потрохами...
1
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 16
20.12.2013, 11:30  [ТС]
Форумчане, вот, что я сделала, но почему-то не работает(((
Значит, имеется htmlka. Вот такая 1.html:
HTML5
1
2
3
4
5
6
7
8
9
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <meta http-equiv="expires" content="Wed, 25 Feb 2014 08:21:57 GMT"> 
</head>
<body>
  <p>vacuum</p>
</body>
</html>
Вот перл код, который у меня получился, но не не работает, не знаю где ошибка, в самой регулярке или же в сохранении в переменную.
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
open FILE, '1.html';
while (defined (my $file_line = <FILE>)) 
{
  print $file_line;
  # значением $ct должна быть строка, например, Content-Type
  $ct = $file_line =~ m/<meta http-equiv="(.*?)"content/sx;
  # значением $th должна быть строка, например, text/html
  $th = $file_line =~ m/content=""(.*?)";charset=/sx;
  # значением $chst должна быть строка, например, windows-1251
  $chst = $file_line =~ m/charset=(.*?)";">/sx;
  # значением $expr должна быть строка, например, Wed, 25 Feb 2014 08:21:57 GMT
  $expr = $file_line =~ m/<meta http-equiv="expires" content="(.*?)";">/sx;
}
print $ct;
close FILE;
Код выводит только исходный код странички((
А нужно выдрать значения из метатегов в переменные.
Помогите, пожалуйста!

Добавлено через 1 час 52 минуты
Вот, вроде бы регулярка, ищущая то, что мне нужно, кроме Wed, 25 Feb 2014 08:21:57 GMT в

HTML5
1
<meta http-equiv="expires" content="Wed, 25 Feb 2014 08:21:57 GMT">
Регулярка:
/equiv=.*?(Content-Type).*content=.*?([a-zA-Z\/]+).*charset.*?([a-zA-Z\-\d]+).*?>/

Но как сделать так, чтобы то, что она ищет записывалось в переменные я не знаю
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.12.2013, 11:35
Цитата Сообщение от lerochka_pnz Посмотреть сообщение
Но как сделать так, чтобы то, что она ищет записывалось в переменные я не знаю
после удачного сопоставления с шаблоном проверьте содержимое переменных $1 $2 $3
1
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 16
20.12.2013, 11:43  [ТС]
Спасибо огромное за ответ, но эти системные переменные пусты(
А регулярка работает:
http://regex101.com/r/oV6wO9
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
20.12.2013, 12:05
Цитата Сообщение от lerochka_pnz Посмотреть сообщение
А регулярка работает
То есть сообщение
Hmm.. I failed to catch the error in this pattern... Please create a permalink and email it to me at contact@regex101.com along with the following info: cached_pattern is undefined
Вас абсолютно не смутило?
Прежде всего у Вас в строке (по ссылке) ошибка
<meta http-equiv="Content-Type" content="text/html; charset="windows-1251">
перед windows кавычка не нужна. А если переменные пустые, значит не отрабатывает шаблон...

Не совсем то, но где-то рядом:
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl -w
use strict;
 
my $content =<<ENDHTML;
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <meta http-equiv="expires" content="Wed, 25 Feb 2014 08:21:57 GMT"> 
</head>
<body>
  <p>vacuum</p>
</body>
</html>
ENDHTML
 
while ( $content =~ /<meta http-equiv="(.*?)" content="(.*?)">/g ) {
    print $1, ": ", $2, "\n";
}
Code
1
2
3
$ ./metashow.pl 
Content-Type: text/html; charset=windows-1251
expires: Wed, 25 Feb 2014 08:21:57 GMT
1
 Аватар для petrovish1981
63 / 38 / 6
Регистрация: 24.01.2013
Сообщений: 136
21.12.2013, 14:59
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl -w
use strict; 
my ($ct,$th,$chst,$expr);
my $file_line = '
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <meta http-equiv="expires" content="Wed, 25 Feb 2014 08:21:57 GMT"> 
</head>
<body>
  <p>vacuum</p>
</body>
</html>';
 
  print $file_line;
  $file_line =~ /<\s*meta\s*http-equiv\s*=\s*"(.+)?".*
  content\s*=\s*"([^\s;]+)?.*charset\s*=\s*(.+)?"\s*>.*content\s*=\s*"(.+)?"/sx;
  $ct=$1; $th=$2; $chst=$3; $expr=$4;
print "\n ct = $ct  th = $th  chst = $chst \n expr = $expr ";
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.12.2013, 14:59
Помогаю со студенческими работами здесь

Извлечение подстроки, ограниченной заданными символами
Приветствую всех. Необходимо извлечь из строки подстроку, которая ограничена заданными символами (символом) слева, справа или и слева и...

Извлечение подстроки из строки (без использования библиотек функции)
Извлечение подстроки из строки (без использования библиотек функций). Помогите чем кто может, заранее спасибо:)

Извлечение значений выделенного текста (разделить строку на подстроки)
Есть текст, допустим формат rgb вида 255,255,255. Выделяю его мышкой. Как извлечь каждое значение r, g и b? Пробовал регулярные...

Извлечение данных из базы Firebird в переменную (WPF)
Подскажите, как извлекать данные из базы данных в переменную

Разбить переменную на подстроки
chcp 1251 &gt;nul SET desc=Васин Александр Петрович есть переменная desc, она постоянно меняется. подскажите пожалуйста, как ее...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru