Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] StringRegExp не работает? %) (http://forum.oszone.net/showthread.php?t=154443)

Freesty1er 26-10-2009 00:52 1252451

StringRegExp не работает? %)
 
Код:

$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", точнее то, что до запятой))... А в итоге получаю пустоту... Что не так делаю?

Creat0R 26-10-2009 01:17 1252458

Цитата:

Цитата Freesty1er
Что не так делаю? »

Не заглядываете в справку к функций StringRegExp. Второй парамаметр указывает что будет возвращать функция. Если больше чем 0 то массив, поэтому проверять нужно элемент массива ($good[0]).

А вообще не обязательно читать каждую строчку:

Код:

$sReadFile = FileRead("C:\1.csv")

$aGood = StringRegExp($sReadFile, '(?m)^(.*?),', 3)

For $i = 0 To UBound($aGood)-1
    MsgBox(64, "Line read:", $aGood[$i])
Next


loban 24-01-2022 21:16 2978578

Здравствуйте!

Подскажите, как в подобной строке взять значение
Код:

"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

не получается

iglezz 25-01-2022 23:29 2978693

loban, Можно уложиться в одну операцию с такой заменой
Код:

$sNewData= StringRegExpReplace($sData , '(C:(\\*)Users(\2))(.*?)\2', '${1}' & $us & '$2')

loban 26-01-2022 09:26 2978706

iglezz,
отлично!
то, что нужно.


Время: 11:36.

Время: 11:36.
© OSzone.net 2001-