Что нового

Ошибки StringRegExp - ошибка поиска в AutoIt

BL_PENETRATOR

Новичок
Сообщения
11
Репутация
0
В регулярках AutoIt - ошибка! Предполагаю, что в самом движке. Пример:
есть текстовый файл, в нём строки:
cam_dispersion = 1.0
cam_dispersion_inc = 0.5
zoom_cam_dispersion = 0.9

нужно найти cam_dispersion
пишем:
Код:
StringRegExp( $s, 'cam_dispersion[\h\t=]')
получаем на выходе:
cam_dispersion = 1.0
cam_dispersion_inc = 0.5
zoom_cam_dispersion = 0.9

а должны были получить только
cam_dispersion = 1.0 и zoom_cam_dispersion = 0.9
почему? А потому что расшифровываем регулярное выражение для поиска ->
'cam_dispersion[\h\t=]' ищем cam_dispersion а потом ЛИБО пробел ЛИБО табуляция ЛИБО знак равно и ничего другого... но почему-то,
cam_dispersion_inc = 0.5 именно в AutoIt тоже попадает под совпадение, хотя символ '_' не указан для поиска, увы, но в Java Script - работает правильно и выдаёт только те результаты, которые действительно подходят под регулярное выражение, а именно -> cam_dispersion = 1.0 и zoom_cam_dispersion = 0.9

Почему в AutoIt ищет не верно? Есть варианты? Мысли? Буду премного благодарен.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
AutoIt 3.3.14.5
Код:
$s = "cam_dispersion = 1.0" & @CRLF & "cam_dispersion_inc = 0.5" & @CRLF & "zoom_cam_dispersion = 0.9"
$a = StringRegExp($s, 'cam_dispersion[\h\t=]', 3)

#include <Array.au3>
ConsoleWrite(_ArrayToString($a) & @CRLF)

; -------------------------

$s = "cam_dispersion = 1.0"
ConsoleWrite(StringRegExp( $s, 'cam_dispersion[\h\t=]') & @CRLF)
$s = "cam_dispersion_inc = 0.5"
ConsoleWrite(StringRegExp( $s, 'cam_dispersion[\h\t=]') & @CRLF)
$s = "zoom_cam_dispersion = 0.9"
ConsoleWrite(StringRegExp( $s, 'cam_dispersion[\h\t=]') & @CRLF)

Вывод
Код:
cam_dispersion |cam_dispersion
1
0
1
Вроде всё правильно...
 
Верх