Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
1

Регулярное выражение - не находит конец строки

09.09.2011, 21:40. Просмотров 2638. Ответов 20
Метки нет (Все метки)

не могу взять текст между Location: и концом строки

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
buf := 'Location: [url]http://www.site.com/[/url]
Content-Length: 211
Accept-Ranges: bytes';
 
function redi (buf : string) : string;
var
RegExp: TRegExpr;
begin
 RegExp := TRegExpr.Create;
 RegExp.Expression := 'Location: (.*)'+ #13#10+'$?';
 if RegExp.Exec(buf) then
 begin
 buf := RegExp.Match[1];
 Result := buf;
 end else Result := 'не найдено';
 RegExp.Free;
end;
пробовал еще так
Delphi
1
 RegExp.Expression := 'Location: (.*)#13#10$?';
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2011, 21:40
Ответы с готовыми решениями:

Регулярное выражение
В проекте используется TRegExpr. Помогите составить выражение для отображения "Russian Federation,...

Регулярное выражение
В регулярках не селен, подскажите регулярное выражение что бы спарсить между title=" и user=" В...

Регулярное выражение
Доброго времени суток! Нужно спарсить следующий html код: <tr> <td>Текст1</td> <td>Текст2</td>...

Регулярное выражение не находит строки с кириллицей
$res = preg_match('/конкурс/i', 'Конкурс'); var_dump($res); Выводит int(0) почему? ведь должно...

20
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:12 2
'Location: (.*)'+ #13#10+'$?';
что за ерунда, тебе ссылку нужно вытащить?
url /url это ты поставил когда добавлял пост или эти BB коды там присутствуют?
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:20  [ТС] 3
Цитата Сообщение от anonimus Посмотреть сообщение
что за ерунда, тебе ссылку нужно вытащить?
url /url это ты поставил когда добавлял пост или эти BB коды там присутствуют?

да надо ссылку вытянуть, а эта ерудна url /url сама подставляется при добавлении поста
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:33 4
ну тогда что-то типа такого
Delphi
1
'(Location:)(.*)[\/]'
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:34  [ТС] 5
Цитата Сообщение от anonimus Посмотреть сообщение
ну тогда что-то типа такого
Delphi
1
'(Location:)(.*)[\/]'
слеша может и не быть, там может быть порт типа site.com/page.php:3012
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:38 6
ну тогда между Location и Content-Length потом trim() удаляй лишние пробелы если такие будут
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:43  [ТС] 7
Цитата Сообщение от anonimus Посмотреть сообщение
ну тогда между Location и Content-Length потом trim() удаляй лишние пробелы если такие будут
Content-Length может быть в другом месте хедера, поэтому не подходит
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:48 8
а всегда Location: и url на одной строчке?

Добавлено через 2 минуты
если так, то
Delphi
1
'(Location:)(.+)$'
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:49  [ТС] 9
Цитата Сообщение от anonimus Посмотреть сообщение
а всегда Location: и url на одной строчке?

Добавлено через 2 минуты
если так, то
Delphi
1
'(Location:)(.+)$'
Location может не быть вообще
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:51 10
ну так это все надо было писать еще в первом посте, этого может не быть, того тоже, а что вообще может быть 100%
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:52  [ТС] 11
прикол еще в том что если вывести текст по символьно
Delphi
1
2
3
4
s := http.Headers.Text;
for i:=0 to length(s) do begin
memo2.Text := memo2.Text + ( '[ '+s[i]+' - '+IntToStr(ord(s[i]))+' ]' );
end;
то эти символы #13#10 присутствуют в конце строки
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:52 12
Цитата Сообщение от dpj Посмотреть сообщение
не могу взять текст между Location: и концом строки
это у тебя написано в первом посте, а теперь ты пишешь Location может не быть
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
09.09.2011, 23:52  [ТС] 13
Цитата Сообщение от anonimus Посмотреть сообщение
ну так это все надо было писать еще в первом посте, этого может не быть, того тоже, а что вообще может быть 100%
Суть поста выловить конец строки
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
09.09.2011, 23:54 14
конец строки в регулярных выражениях это $ и не надо ничего вылавливать
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
10.09.2011, 00:00  [ТС] 15
Цитата Сообщение от anonimus Посмотреть сообщение
конец строки в регулярных выражениях это $ и не надо ничего вылавливать
Поэтому и тему создал. Так как вот такой патерн не дает результата, вернее дает но весь текст а не строку
Delphi
1
pat :='^Location: (.*)$';
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
10.09.2011, 00:15 16
ну значит у тебя все в одну строчку
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
10.09.2011, 00:21  [ТС] 17
Цитата Сообщение от anonimus Посмотреть сообщение
ну значит у тебя все в одну строчку

вот посимвольный вывод, видишь в конце 13 и 10 это символы конца строки
[ H - 72 ][ T - 84 ][ T - 84 ][ P - 80 ][ / - 47 ][ 1 - 49 ][ . - 46 ][ 1 - 49 ][ - 32 ][ 3 - 51 ][ 0 - 48 ][ 2 - 50 ][ - 32 ][ F - 70 ][ o - 111 ][ u - 117 ][ n - 110 ][ d - 100 ][ - 13 ][ - 10 ]
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
10.09.2011, 00:22 18
Цитата Сообщение от dpj Посмотреть сообщение
это символы конца строки
это символы переноса строки и каретки

ты лучше выложи исходный текст из которого нужно вытащить url
0
4 / 4 / 1
Регистрация: 07.09.2011
Сообщений: 55
10.09.2011, 00:28  [ТС] 19
Цитата Сообщение от anonimus Посмотреть сообщение
это символы переноса строки и каретки

ты лучше выложи исходный текст из которого нужно вытащить url
вот

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP/1.1 302 Found
Date: Fri, 09 Sep 2011 20:26:23 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
X-AWS-Id: ws18
domain=www.site.com; path=/; HttpOnly
Location: _http://www.site.com/
Content-Length: 211
Accept-Ranges: bytes
X-Varnish: 1482316461
Age: 0
X-VWS-Id: bil1-varn13
X-Gateway: bil1-swlb03
0
2181 / 1251 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
10.09.2011, 00:43 20
держи
Delphi
1
reg.Expression:='(Location:)[\s]+([^+'#13'+]+)';
Добавлено через 1 минуту
в reg.Match[2] результат
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2011, 00:43

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Регулярное выражение не находит совпадений
Здравствуйте. Есть код: TRegExpr *clearSite = new TRegExpr(); clearSite->Expression =...

Регулярное выражение: конец абзаца
Подскажите как в регулярных выражениях указать конец абзаца. В справочнике пишут, что знак доллара...

Регулярное выражение. Определить конец
string text = "Тратаааа ** /su/Pan/Pan/Czech/Cyu/Xul/ 111 Бам бам бам **...

Регулярное выражение находит не все включения
Здравствуйте. Хочу получить коллекцию подстрок, найденных в строке с помощью регулярного выражения....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.