Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] StringRegExp не работает? %)

Ответить
Настройки темы
[решено] StringRegExp не работает? %)

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:52, 26-10-2009

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3054
Благодарности: 1008

Профиль | Сайт | Отправить PM | Цитировать


Цитата 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 01:17, 26-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Подскажите, как в подобной строке взять значение
Код: Выделить весь код
"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, 25-01-2022 в 15:56.


Отправлено: 21:16, 24-01-2022 | #3


Старожил


Сообщения: 246
Благодарности: 126

Профиль | Отправить PM | Цитировать


loban, Можно уложиться в одну операцию с такой заменой
Код: Выделить весь код
$sNewData= StringRegExpReplace($sData , '(C:(\\*)Users(\2))(.*?)\2', '${1}' & $us & '$2')
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:29, 25-01-2022 | #4


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:26, 26-01-2022 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] StringRegExp не работает? %)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] StringRegExp. Вытаскивание повторяющихся кусков кода HTML. ikif AutoIt 7 06-12-2009 10:30
[решено] StringRegExp: Получение массива где каждый элемент содержит Ini-секцию Creat0R AutoIt 9 28-08-2009 07:52
[решено] Не работает StringRegExp для строк с {Enter}. Как бытЬ? Twix1124 AutoIt 2 25-07-2009 22:16
[решено] В помощь по функциям StringRegExp и StringRegExpReplace beve AutoIt 3 19-02-2009 20:56




 
Переход