Добрый вечер.
Наверно, вопрос покажется несерьезным, но я так и не смог решить самостоятельно.
Необходима функция, которая ищет строки по шаблону и выдает найденные строки полностью.
В принципе, вариант решения есть (функция _SearchString1), но интуитивно чувствую, что это неэффективно, т.к. текст для поиска может содержать достаточно много строк, а искомых среди них относительно мало, поэтому сохранять все строки в массив не лучший вариант. Попробовал написать функцию, которая сохраняет в массив только нужные строки (_SearchString2), но она работает некорректно - сохраняет только найденную подстроку, а не всю строку. Либо некорректно само выражение, либо я неверно понимаю смысл флага = 3 (насколько я понял из справки, он как раз должен сохранять в массив весь фрагмент, соответствующий шаблону). Подскажите, пожалуйста, в чем ошибка (если можно, с работающим примером).
Искаться должны строки, начинающиеся на SubString1 или SubString2, при этом перед ними может быть некоторое количество пробелов.
Наверно, вопрос покажется несерьезным, но я так и не смог решить самостоятельно.
Необходима функция, которая ищет строки по шаблону и выдает найденные строки полностью.
В принципе, вариант решения есть (функция _SearchString1), но интуитивно чувствую, что это неэффективно, т.к. текст для поиска может содержать достаточно много строк, а искомых среди них относительно мало, поэтому сохранять все строки в массив не лучший вариант. Попробовал написать функцию, которая сохраняет в массив только нужные строки (_SearchString2), но она работает некорректно - сохраняет только найденную подстроку, а не всю строку. Либо некорректно само выражение, либо я неверно понимаю смысл флага = 3 (насколько я понял из справки, он как раз должен сохранять в массив весь фрагмент, соответствующий шаблону). Подскажите, пожалуйста, в чем ошибка (если можно, с работающим примером).
Искаться должны строки, начинающиеся на SubString1 или SubString2, при этом перед ними может быть некоторое количество пробелов.
Код:
$sText = _
"SubString1 bla bla bla" & @CRLF & _
" SubString2 bla bla bla" & @CRLF & _
"bla bla bla SubString2 bla bla bla" & @CRLF & _
"bla bla bla"
_SearchString1()
_SearchString2()
Func _SearchString1()
ConsoleWrite("===== _SearchString1() =====" & @CRLF)
$asLines = StringSplit($sText, @CRLF, 1)
For $i = 1 To $asLines[0]
If StringRegExp($asLines[$i], "(?m)^\s*(SubString1|SubString2)", 0) Then
ConsoleWrite($asLines[$i] & @CRLF)
EndIf
Next
EndFunc
Func _SearchString2()
ConsoleWrite("===== _SearchString2() =====" & @CRLF)
$asLines = StringRegExp($sText, "(?m)^\s*(SubString1|SubString2).*$", 3)
For $sString In $asLines
ConsoleWrite($sString & @CRLF)
Next
EndFunc