Русское сообщество AutoIt

  • Май 22, 2012, 14:29:17 *
  • Добро пожаловать, Гость
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  

Новости:

Создан файловый архив для участников форума.

Закачивайте свои файлы и получайте рейтинг, прямые ссылки, и т.п.

Для изображений и скриншотов по прежнему есть AUTOIT.RV.UA

Реклама

Автор Тема: Выделение текста через StringRegExp  (Прочитано 653 раз)

0 Пользователей и 1 Гость смотрят эту тему.

_Lexa98_ [?]

  • Новичок
  • *
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Есть файл:
<vsvod>Это тест</vsvod>
<br>
<br>
<br>
<br>
<br>
<!-- "' --><span class="pbbRrB4o"><a href="http://www.ucoz.ru/">Бесплатный хостинг</a> <a title="Бесплатный хостинг" href="http://www.ucoz.ru/">uCoz</a></span><div id="utbr8214" rel="s62"></div>
<!-- 0.00208 (s62) -->

Нужно вывести "Это тест" в MsgBox.
У меня не получается :(
Как это сделать?
« Последнее редактирование: Февраль 16, 2012, 12:10:50 от _Lexa98_ »



  Записан

Medic84 [?]

  • Администратор
  • *
  • *****
  • Репутация: 161
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 943
  • Версия AutoIt: 3.3.6.1
    • WWW
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #1, Отправлен: Февраль 15, 2012, 22:39:40 »
Уточню - это весь файл? Или кусок HTML из страницы? Если второе, то нужно больше текста.




  Записан
   
На форуме принято отмечать полезные сообщения кнопкой "Полезное сообщение"
Никогда не даю подробных примеров сразу, я сначала навожу на мысль - как можно написать. Учитесь мыслить сами, а не за других людей.
Моя лаборатория - программы, статьи и ответы на вопросы.

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #2, Отправлен: Февраль 15, 2012, 22:42:48 »
Medic84
Я это получил через _InetGetSourse, и это все что было :whistle:




  Записан

focus [?]

  • Новичок
  • *
  • Репутация: 17
  • Offline Offline
  • Сообщений: 56
  • Версия AutoIt: 3.3.6
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #3, Отправлен: Февраль 15, 2012, 23:20:41 »
В t1 - Ваш текст
Код: AutoIt [Выделить]
$sText = FileRead (@ScriptDir & '\t1.txt')
ConsoleWrite($sText & @CRLF)
;MsgBox(0,"Title",$sText &@CRLF)
;MsgBox(0,"Это тест", $sText &@CRLF)

$sText1 = StringReplace($sText, '<br>', ' ')
$sText2 = StringReplace($sText1, 'Это тест', ' ')
MsgBox(0, "Это тест", $sText2)
 
« Последнее редактирование: Февраль 16, 2012, 00:30:02 от focus »



  Записан

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #4, Отправлен: Февраль 16, 2012, 12:07:35 »
focus
Это не то! Читайте первый пост ;)


Добавлено: Февраль 16, 2012, 12:09:31
А если так?
<vsvod>Это тест</vsvod>
<br>
<br>
<br>
<br>
<br>
<!-- "' --><span class="pbbRrB4o"><a href="http://www.ucoz.ru/">Бесплатный хостинг</a> <a title="Бесплатный хостинг" href="http://www.ucoz.ru/">uCoz</a></span><div id="utbr8214" rel="s62"></div>
<!-- 0.00208 (s62) -->




  Записан

Zaramot [?]

  • AutoIt Гуру
  • *****
  • Репутация: 456
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 887
  • Версия AutoIt: v3.3.8.1
  • I ♥ AutoIt
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #5, Отправлен: Февраль 16, 2012, 13:04:24 »
Код: AutoIt [Выделить]
$text = '<vsvod>Это тест</vsvod>' & @CRLF & _
        '<br>' & @CRLF & _
        '<br>' & @CRLF & _
        '<br>' & @CRLF & _
        '<br>' & @CRLF & _
        '<br>' & @CRLF & _
        '<!-- "'' --><span class="pbbRrB4o"><a href="http://www.ucoz.ru/">Бесплатный хостинг</a> <a title="Бесплатный хостинг" href="http://www.ucoz.ru/">uCoz</a></span><div id="utbr8214" rel="s62"></div>' & @CRLF & _
        '<!-- 0.00208 (s62) -->'
$Reg = StringRegExp($text, '<vsvod>(.*?)</vsvod>', 3)
MsgBox(0, '', $Reg[0])




  Записан

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #6, Отправлен: Февраль 16, 2012, 13:06:12 »
Zaramot
В msgbox пишет 3




  Записан

Kaster [?]

  • Глобальный модератор
  • *
  • *****
  • Репутация: 502
  • Online Online
  • Пол: Мужской
  • Сообщений: 3286
  • Версия AutoIt: 3.3.8.1
  • Мой Аватар, он лучший самый
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #7, Отправлен: Февраль 16, 2012, 13:11:42 »
тема создана не в том разделе. автору устное предупреждение




  Записан
Конференция посвященная AutoIt на jabber.ru - autoit@conference.jabber.ru
Как попасть на конференцию читаем тут
Файлы можете качать сюда - Файловая область
Продолжать дискуссию в теме отмеченной как "Решенная" - моветон.
Банхамером не обладаю, так что расслабьтесь ;)
Банхамером обладаю, так что не расслабляться :Ban:

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #8, Отправлен: Февраль 16, 2012, 13:13:42 »
Kaster  [?]
Цитата
тема создана не в том разделе. автору устное предупреждение
Она должна быть в регулярных выражениях? Я прав?

Zaramot
Вот весь код:
Код: AutoIt [Выделить]
#include <INet.au3>
#include <Encoding.au3>
;~ MsgBox(64,"",_INetGetSource('http://askonkurs.ucoz.ru'))

$text = _INetGetSource('http://askonkurs.ucoz.ru')

$text = _Encoding_CyrillicTo1251($text)

$Reg = StringRegExp($text, '<vsvod>(.*?)<\vsvod>', 3)
MsgBox(0, '', $Reg[0])
Пишет ошибку:
==> Subscript used with non-Array variable.:
MsgBox(0, '', $Reg[0])
MsgBox(0, '', $Reg^ ERROR
>Exit code: 1    Time: 1.357




  Записан

Zaramot [?]

  • AutoIt Гуру
  • *****
  • Репутация: 456
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 887
  • Версия AutoIt: v3.3.8.1
  • I ♥ AutoIt
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #9, Отправлен: Февраль 16, 2012, 13:17:20 »
Вот:
Код: AutoIt [Выделить]
#include <INet.au3>
#include <Encoding.au3>
;~ MsgBox(64,"",_INetGetSource('http://askonkurs.ucoz.ru'))

$text = _INetGetSource('http://askonkurs.ucoz.ru')

$text = _Encoding_CyrillicTo1251($text)

$Reg = StringRegExp($text, '<vsvod>(.*?)<', 3)
MsgBox(0, '', $Reg[0])




  Записан

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #10, Отправлен: Февраль 16, 2012, 13:24:40 »
Zaramot
Спасибо :)




  Записан

Kaster [?]

  • Глобальный модератор
  • *
  • *****
  • Репутация: 502
  • Online Online
  • Пол: Мужской
  • Сообщений: 3286
  • Версия AutoIt: 3.3.8.1
  • Мой Аватар, он лучший самый
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #11, Отправлен: Февраль 16, 2012, 13:36:02 »
_Lexa98_  [?]
Цитата
Она должна быть в регулярных выражениях? Я прав?
да




  Записан

madmasles [?]

  • Локальный модератор
  • *
  • *****
  • Репутация: 1426
  • Online Online
  • Пол: Мужской
  • Сообщений: 3819
  • Версия AutoIt: 3.3.6.1 - 3.3.9.4
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #12, Отправлен: Февраль 16, 2012, 13:40:01 »
_Lexa98_,
У Вас в HTML коде ошибка, должно быть ...</vsvod>..., а не ...<\vsvod>..., как сейчас, и Encoding.au3 здесь не нужна, как и INet.au3
Код: AutoIt [Выделить]
#include <Array.au3>

$s_Sourse = InetRead('http://askonkurs.ucoz.ru', 17)
If @error Then Exit 1
$s_Sourse = BinaryToString($s_Sourse, 4)
If StringInStr($s_Sourse, '<\vsvod>') Then
    $sPattern = '<vsvod>(.*?)<\\vsvod>'
ElseIf StringInStr($s_Sourse, '</vsvod>') Then
    $sPattern = '<vsvod>(.*?)</vsvod>'
Else
    ConsoleWrite('No tag <vsvod>' & @LF)
    Exit 1
EndIf
$aVsvod = StringRegExp($s_Sourse, $sPattern, 3)
If @error Then Exit 1
_ArrayDisplay($aVsvod)

_Lexa98_ [?]

  • Новичок
  • *

  • Автор темы
  • Репутация: 8
  • Offline Offline
  • Пол: Мужской
  • Сообщений: 293
  • Версия AutoIt: 3.3.8.1
    • Награды
Re: Выделение текста через StringRegExp
« Ответ #13, Отправлен: Февраль 16, 2012, 19:32:15 »
madmasles
Спасибо, но у меня уже все получилось :)




  Записан
 


Похожие темы
Тема Автор Ответов Просмотров Последний ответ
Exel - выделение границ ячеек
AutoIt для новичков
Vovsla 5 1615 Последний ответ Октябрь 31, 2009, 17:16:37
от Vovsla
Выделение полей и автонажатие
AutoIt для новичков
warshadow 3 913 Последний ответ Апрель 23, 2010, 19:04:13
от warshadow
Корректная передача русского текста через буфер обмена
Стол заказов
Suppir 0 952 Последний ответ Февраль 21, 2011, 18:25:36
от Suppir
Выделение строчки (_GUICtrlListView_Create)
AutoIt для новичков
Tommy Dreams 8 934 Последний ответ Март 18, 2011, 12:35:33
от Kaster
[Сеть, интернет] Поиск текста на странице через IE.au3, WinHTTP и InetGet
Общение
zlo-kazan 11 1495 Последний ответ Апрель 30, 2011, 13:39:53
от Redline
Выделение мышкой.
AutoIt для новичков
Arei 8 817 Последний ответ Апрель 30, 2011, 12:55:38
от DK4
[Элементы GUI] Выделение элементов ListView
AutoIt для новичков
Lubitel Softa 3 783 Последний ответ Июнь 15, 2011, 01:23:35
от VladUs
Перенесено: Выделение текста через StringRegExp
AutoIt для новичков
Kaster 0 126 Последний ответ Февраль 16, 2012, 13:11:53
от Kaster
Запрет нажатия ПКМ, копирование текста, выделение текста.
Автоматизация IE и Web-интерфейса
vanekzver 3 488 Последний ответ Февраль 27, 2012, 06:52:34
от Moonsin
[RegExp] Выделение текста до лишнего
Регулярные выражения и прочее
_Lexa98_ 4 199 Последний ответ Май 08, 2012, 14:51:17
от CreatoR


Реклама