Показать полную графическую версию : [решено] StringRegExp не работает? %)
Freesty1er
26-10-2009, 00:52
$file = FileOpen("C:\1.csv", 0)
$i = 1
While 1
$line = FileReadLine($file, $i)
If @error = -1 Then ExitLoop
$good = StringRegExp($line, '.*(?=\,)', 2)
MsgBox(0, "Line read:", $good)
$i = $i +1
Wend
Не пойму, что не так... Вообщем:
В файле 1.csv 2 строчки, в них: "asd,fgh" и "123,jas"
Мне нужно как-то получить "asd", "123", точнее то, что до запятой))... А в итоге получаю пустоту... Что не так делаю?
Что не так делаю? »
Не заглядываете в справку к функций StringRegExp. Второй парамаметр указывает что будет возвращать функция. Если больше чем 0 то массив, поэтому проверять нужно элемент массива ($good[0]).
А вообще не обязательно читать каждую строчку:
$sReadFile = FileRead (http://www.autoitscript.com/autoit3/docs/functions/FileRead.htm)("C:\1.csv")
$aGood = StringRegExp (http://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm)($sReadFile, '(?m)^(.*?),', 3)
For (http://www.autoitscript.com/autoit3/docs/keywords.htm#For) $i = 0 To (http://www.autoitscript.com/autoit3/docs/keywords.htm#To) UBound (http://www.autoitscript.com/autoit3/docs/functions/UBound.htm)($aGood)-1
MsgBox (http://www.autoitscript.com/autoit3/docs/functions/MsgBox.htm)(64, "Line read:", $aGood[$i])
Next (http://www.autoitscript.com/autoit3/docs/keywords.htm#Next)
Здравствуйте!
Подскажите, как в подобной строке взять значение
"ImageData0000"="{\"path\":\"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Microsoft\\\\Office\\\\16.0\\\\DTS\\\\ru-RU{A41F8A8D-54C9-45BA-AA3D-3B8678087957}\\\\{D82EEE17-5569-4917-A342-C512201F588A}mt45299826.png\",\"type\":2,\"aspectRatio\":1.298701,\"localUrl\":\"C:\\\\Users\\\\User\\\\AppData\\\\Local\\\\Microsoft\\\\Office\\\\16.0\\\\DTS\\\\ru-RU{A41F8A8D-54C9-45BA-AA3D-3B8678087957}\\\\{D82EEE17-5569-4917-A342-C512201F588A}mt45299826.png\",\"staleFilePath\":\"\",\"checksum\":\"021161A76C5C9160BBE876DF63C7361AADE71F5B37A840383E6601B3C77473B9\",\"downloadUrl\":\"https://binaries.templates.cdn.office.net/support/templates/ru-ru/mt45299826.png\"}"
или
"CacheFolderPath"="C:\\Users\\User\\AppData\\Local\\Microsoft\\Office\\16.0\\DTS\\ru-RU{3E748D77-E5F7-4663-BAA5-133EC903EA71}"
Нужно взять User
Global $by = @ScriptDir
FileChangeDir($by)
$W = "Win7"
Global $h3 = $by & "\OfReg.reg"
$h2 = $by & "\" & $W & "_OfReg_x64.reg"
FileCopy($h2, $h3, 9)
$us = StringMid(RegRead("HKEY_LOCAL_MACHINE\software\Microsoft\Windows\CurrentVersion\Authentication\LogonUI", "LastLoggedOnSAMUser"), 3)
$hF = FileOpen($by & "\OfReg.reg", 0)
$sData = FileRead($hF)
FileClose($hF)
$aRes = StringRegExp($sData, '(.?)C:\\Users\\(.*?)\\', 3)
For $i = 0 To UBound($aRes) - 1
If $aRes[$i] <> "" Then
$sData = StringReplace($sData, 'C:\\Users\' & $aRes[$i] & '\\', 'C:\\Users\\' & $us & '\\')
EndIf
Next
не получается
loban, Можно уложиться в одну операцию с такой заменой
$sNewData= StringRegExpReplace($sData , '(C:(\\*)Users(\2))(.*?)\2', '${1}' & $us & '$2')
iglezz,
отлично!
то, что нужно.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.