Creat0R
23-08-2009, 02:36
#include <Array.au3>
$sRead = _
"[Sect 1]" & @CRLF & _
"Key=Val" & @CRLF & _
"[Sect 2]" & @CRLF & _
"Key=Val" & @CRLF & _
"[Sect 3]" & @CRLF & _
"Key=Val"
;Эта строчка добавляет новую строку перед каждой секцией в $sRead, что позволяет $sPattern быть "правильным" запросом поиска
;$sRead = StringRegExpReplace($sRead, '.*(\[.*\]).*', @CRLF & '\1')
$sPattern = '(?s).*?(\[.*?\].*?)(?:(?:\r\n){2}|\[.*?\]|$)'
$aResults = StringRegExp($sRead, $sPattern, 3)
_ArrayDisplay($aResults)
Всё что требуется, так это за один заход (один вызов StringRegExp) получить массив, где каждый элемент содержит одну секцию (целиком).
Если раскоментировать строчку с дополнительным вызовом StringRegExp, то будет видно каков мне нужен результат.
P.S
Строку с Pattern:
(?s).*?(\[.*?\].*?)(?:(?:\r\n){2}|\[.*?\]|$)
Я уже менял раз 100, всё что удалось так это сбор секции через одну, а не по порядку.
Дело в том что закоментированная строчка просто добавляет перевод строки (@CRLF) к имени каждой секции, в таком раскладе мой запрос работает, т.е если в ini-файле секции разделены между собой пустой строкой, то запрос актуален, а если строки нет, и секции сливаются, то мой запрос уже не работает - а нужно чтобы срабатывала вне зависимости от наличия пустых строк.
$sRead = _
"[Sect 1]" & @CRLF & _
"Key=Val" & @CRLF & _
"[Sect 2]" & @CRLF & _
"Key=Val" & @CRLF & _
"[Sect 3]" & @CRLF & _
"Key=Val"
;Эта строчка добавляет новую строку перед каждой секцией в $sRead, что позволяет $sPattern быть "правильным" запросом поиска
;$sRead = StringRegExpReplace($sRead, '.*(\[.*\]).*', @CRLF & '\1')
$sPattern = '(?s).*?(\[.*?\].*?)(?:(?:\r\n){2}|\[.*?\]|$)'
$aResults = StringRegExp($sRead, $sPattern, 3)
_ArrayDisplay($aResults)
Всё что требуется, так это за один заход (один вызов StringRegExp) получить массив, где каждый элемент содержит одну секцию (целиком).
Если раскоментировать строчку с дополнительным вызовом StringRegExp, то будет видно каков мне нужен результат.
P.S
Строку с Pattern:
(?s).*?(\[.*?\].*?)(?:(?:\r\n){2}|\[.*?\]|$)
Я уже менял раз 100, всё что удалось так это сбор секции через одну, а не по порядку.
Дело в том что закоментированная строчка просто добавляет перевод строки (@CRLF) к имени каждой секции, в таком раскладе мой запрос работает, т.е если в ini-файле секции разделены между собой пустой строкой, то запрос актуален, а если строки нет, и секции сливаются, то мой запрос уже не работает - а нужно чтобы срабатывала вне зависимости от наличия пустых строк.