Автор Тема: [RegExp] Символ перевода строки LF и регулярное не работает  (Прочитано 764 раз)

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

Оффлайн videoproc [?]

  • Новичок
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Добрый вечер!
Есть код test.au3:

Код: AutoIt [Выделить]
#include <Array.au3>
#include <MsgBoxConstants.au3>

$hFile = FileOpen(@ScriptDir & '\test.txt', 0)

If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf
$htmlcode = FileRead($hFile)
FileClose($hFile)
ConsoleWrite($htmlcode)
MyStringRegExp($htmlcode,'<div class="item1">(.*?)</div>')
MyStringRegExp($htmlcode,'<div class="item2">(.*?)</div>')
MyStringRegExp($htmlcode,'<div class="item3">(.*?)</div>')
;============================================
Func MyStringRegExp($str,$pattern,$flag=1)
   $arr = StringRegExp($str,$pattern,$flag)
   If IsArray($arr) Then
      _ArrayDisplay($arr)
   Else
      MsgBox(4096, 'Внимание', 'Не найдено! '&$pattern)
   EndIf
EndFunc
 


И есть файл test.txt
<div class="item1">Это item1</div>
    <div class="item2">
Это item2</div>
<div class="item3"> Это item3</div>

Не могу понять почему так влияет @LF на работу с регулярным выражением?

Решение очевидно:
Код: AutoIt [Выделить]
$htmlcode = StringReplace($htmlcode,@LF, "")
 

Но хотелось бы узнать как избежать этого влияния не выходя за пределы функции StringRegExp?


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться

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


Оффлайн videoproc [?]

  • Новичок
  • *
  • Сообщений: 3

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
item2 не берет! Исходник приложен выше в архиве!

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1437
  • Репутация: 213
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Все дело в Точке или отсутствии флага "(?s)".

Оффлайн videoproc [?]

  • Новичок
  • *
  • Сообщений: 3

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Все дело в Точке или отсутствии флага "(?s)".
Можно пример, чтобы считать текст Это item2

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

Re: [RegExp] Символ перевода строки LF и регулярное не работает
« Ответ #3 Отправлен: Апрель 18, 2018, 21:21:17 »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1437
  • Репутация: 213
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0

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

Re: [RegExp] Символ перевода строки LF и регулярное не работает
« Ответ #4 Отправлен: Апрель 18, 2018, 21:25:00 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
4481 Просмотров
Последний ответ Июнь 20, 2010, 07:20:35
от gregaz
23 Ответов
15619 Просмотров
Последний ответ Сентябрь 25, 2010, 10:42:18
от Kaster
3 Ответов
3025 Просмотров
Последний ответ Октябрь 04, 2011, 10:16:20
от gregaz
4 Ответов
4477 Просмотров
Последний ответ Ноябрь 20, 2011, 21:42:30
от gregaz
8 Ответов
4910 Просмотров
Последний ответ Ноябрь 30, 2011, 04:57:24
от -ZIG-ZAG-
2 Ответов
2461 Просмотров
Последний ответ Октябрь 19, 2012, 16:09:33
от madmasles
6 Ответов
2775 Просмотров
Последний ответ Февраль 14, 2013, 16:46:43
от gregaz
18 Ответов
5745 Просмотров
Последний ответ Июль 21, 2013, 18:35:17
от mef-t
8 Ответов
2712 Просмотров
Последний ответ Ноябрь 03, 2014, 13:07:12
от fortages
2 Ответов
862 Просмотров
Последний ответ Сентябрь 11, 2016, 08:55:29
от DezmontDeXa