STARSsoft,
FileOperations.au3
Код:
![Выделить весь код](images/misc/selectcode.png)
#include <FileOperations.au3>
$sPath = @ScriptDir & '\index.htm'
$sText = FileRead($sPath)
$aSplit = _StringSplitRegExp($sText, '<!-- Post -->.*?<!-- # Post -->')
For $i = 1 To $aSplit[0]
$sPathNew = _FO_GetCopyName($sPath, 1)
$hFile = FileOpen($sPathNew, 2)
FileWrite($hFile, $aSplit[$i])
FileClose($hFile)
Next
; http://www.autoitscript.com/forum/topic/139260-autoit-snippets/?p=1065198
; http://www.autoitscript.com/forum/topic/139260-autoit-snippets/page__st__140#entry1036931
; http://www.autoitscript.com/forum/topic/65662-stringsplitregexp/
; Автор ..........: AZJIO
Func _StringSplitRegExp($sString, $sPattern, $flag = 0, $sIncludeMatch = 0, $iCount = 0)
Local $sSplit, $sDelim, $sReplace, $Toggle, $iPos = 1
If IsBinary($sString) Then
$sString = Hex($sString)
$sDelim = Chr(1)
Local $aError[2] = [1, $sString]
Else
Local $aError[2] = [1, $sString]
For $i = 1 To 30
$Toggle = Not $Toggle
If $Toggle Then ; 1, 30, 3, 28 ... 27, 4, 29, 2
$sDelim &= Chr($i)
Else
$sDelim &= Chr(32 - $i)
EndIf
$iPos = StringInStr($sString, $sDelim, 1, 1, $iPos) ; смещение позволяет найти разделитель за 1 проход
If Not $iPos Then ExitLoop ; если вхождение не найдено, то разделитель сформирован
Next
If $iPos Then Return SetError(1, 0, $aError)
EndIf
Switch $sIncludeMatch
Case 0
$sReplace = $sDelim
Case 1
$sReplace = "$0" & $sDelim
Case 2
$sReplace = $sDelim & "$0"
EndSwitch
$sSplit = StringRegExpReplace($sString, $sPattern, $sReplace, $iCount)
If @error Then Return SetError(2, @extended, $aError)
If Not @extended Then Return SetError(3, 0, $aError)
If $flag Then $flag = 2
Return StringSplit($sSplit, $sDelim, 1 + $flag)
EndFunc ;==>_StringSplitRegExp