Что нового

В конец строки добавить скобку

eway

Новичок
Сообщения
5
Репутация
0
Есть текстовый файл со строками параметрами. Есть строки типа testParametrov(resultat, 0.0, testParametrov(resultat, 100,
Вот необходимо в конце этих строк добавить скобочку ")"
Пишу...
$hFile = FileOpenDialog('Выберите файл', @ScriptDir & "", "Все (*.*)")
$sText = FileRead($hFile) ;Читаем файл

$sText = StringRegExpReplace($sText, "^testParametrov", ")$")


Помогите, пожалуйста, с регулярным выражением
 

Zmy

Знающий
Сообщения
18
Репутация
6
Код:
$sText = StringRegExpReplace($sText, "^(testParametro.+)", "$1)")
 
Автор
E

eway

Новичок
Сообщения
5
Репутация
0
(resultat, 7.0
вот что выдал на выводе... удалил testparametrov и скобку пока тоже не добавил...
 

Zmy

Знающий
Сообщения
18
Репутация
6
Напишите конкретно, что надо удалить / заменить.

Код:
Исходный текст  -  Результатный текст
 
Автор
E

eway

Новичок
Сообщения
5
Репутация
0
строки TestParametrov( resultat, 0.0
просто добавить скобочку чтобы выглядели так TestParametrov( resultat, 0.0)
 

Zmy

Знающий
Сообщения
18
Репутация
6
Это что, весь скрипт что-ли?
Вы напишите свой скрипт сюда. Полностью весь скрипт.
Я не вижу, как вы получаете результат.
Куда выводится результат?
Сколько надо сделать замен?
Что происходит с результатом дальше?
Вообщем, задача пока не ясна. Нет задачи - нет решения.


И вставьте под спойлер свой текст, в котором надо произвести замену.
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
247
Не силён в регулярных выражениях (только пытаюсь их освоить), но вот мой вариант :
Код:
#include <array.au3>
$Text = 'testParametrov(resultat,  0.0, testParametrov(resultat,  100'
$aResult = StringRegExp($Text, '(testParametrov\(resultat,[0-9. ]*+)', 3)
For $i = 0 To UBound($aResult) - 1
	$aResult[$i] &= ')'
Next
_ArrayDisplay($aResult)
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
MsgBox(32,'',StringRegExpReplace(ClipGet(),'(testParametrov\(resultat,[^,]+),','\1)'))
 
A

Alofa

Гость
Код:
$sText = @CRLF & 'testParametrov(resultat,  0.0,' & @CRLF & _
		'testParametrov(resultat,  100 ' & @CRLF
ConsoleWrite(StringRegExpReplace($sText, '(.*\d+).*', '$1)') & @LF)
 
Автор
E

eway

Новичок
Сообщения
5
Репутация
0
ребят не ставится....(
 

Вложения

  • temp.txt
    69.4 КБ · Просмотры: 8

ildar

Осваивающий
Сообщения
252
Репутация
30
Обязательно регулярное выражение? Судя по вложению, достаточно найти данную строку и дописать ")"
 

Zmy

Знающий
Сообщения
18
Репутация
6
Вот готовый скрипт. Замените на свой путь.

Код:
$sFile = 'C:\Kemp\temp.txt'

_OFile($sFile)
Func _OFile($sFile)
Local $sText = FileRead($sFile)
Local $hFile = FileOpen($sFile, 2)
Local $cFile = StringRegExpReplace($sText, "(?mi)(^\s*testParamet.+)", "$1)")
FileWrite($hFile, $cFile)
FileClose($hFile)
EndFunc
 

ildar

Осваивающий
Сообщения
252
Репутация
30
Код:
#include <File.au3>
Local $aRecords
$sTest = 'testParametrov(resultat,'
If Not _FileReadToArray('temp.txt', $arecords) Then
    MsgBox(4096, "Ошибка", " Ошибка чтения файла в массив     Ошибка = " & @error)
    Exit
EndIf
For $i = 0 To $arecords[0]
   If StringInStr($arecords[$i], $sTest) Then $arecords[$i] = $arecords[$i] & ')'
Next
_FileWriteFromArray('temp1.txt', $arecords)
 
A

Alofa

Гость
eway может уже предоставите пример файла или дальше будем пальцем в небо тыкать?
 

ildar

Осваивающий
Сообщения
252
Репутация
30
9-й ответ есть вложение http://autoit-script.ru/index.php?topic=23655.msg136105#msg136105
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
eway

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.






Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Помогите, пожалуйста, с регулярным выражением" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.
 
Верх