Что нового

[RegExp] Символ перевода строки LF и регулярное не работает

videoproc

Новичок
Сообщения
3
Репутация
0
Добрый вечер!
Есть код test.au3:

Код:
#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 на работу с регулярным выражением?

Решение очевидно:
Код:
$htmlcode = StringReplace($htmlcode,@LF, "")

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

Вложения

  • test.zip
    738 байт · Просмотры: 4
Автор
V

videoproc

Новичок
Сообщения
3
Репутация
0
item2 не берет! Исходник приложен выше в архиве!
 
A

Alofa

Гость
Все дело в Точке или отсутствии флага "(?s)".
 
Верх