|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » StringRegExpReplace — для чайников! |
|
|
StringRegExpReplace — для чайников!
|
Ветеран Сообщения: 842 |
Не мог бы ктонибудь простые понятные примеры показать.
У меня либо никакого результата, либо результат не предсказуемый. Совсем не понятно ничего. ![]() Почему это альфа вдруг буквы не показывает? А паттерн {x} сам себя размножает. И как создать тест с переносом строк внутри кода, array() чтоли? Для удобства хочется всё в одном скрипте собрать,хотя можно и внешний тест шаблон подключить в крайнем случае. То что в хелпе написанно, ну не понятно совершенно к сожалению. Особенно примеры утомляют напичканные While, If, Then, тут итак мозги свернёшь, нужны примитивные примеры, а не сложные. |
|
------- Отправлено: 21:51, 17-11-2010 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Вы скажите, чего хотите добиться своим кодом. Пока вижу, что паттерн не подходит совершенно.
А строки с переносом спецсимволом \n кодируются, либо да, в массив. |
Отправлено: 22:00, 17-11-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 22:18, 17-11-2010 | #3 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Тут написано
Цитата:
Цитата Redisych:
Цитата Redisych:
Вообще меня интересует поиск и замена строк, но хотя StringRegExpReplace это только и делает. Redisych, загляните в этот пост, я хоть тему закрыл, но не решённым осталось http://forum.oszone.net/post-1545134-29.html там суть в том что надо найти одну строку, а изменить другую. Либо весь текст выстроить в строку и править в StringRegExpReplace Конкретно целевую строчку нельзя задавать в поиске, потомучто в файле таких строк много, а уникальное имя получается что в строке выше. Что-то мы отвлеклись... Давайте лучше примеры, хоть чтонибудь попроще? Или ссылку на примеры... Ато я так никогда не научусь паттерновому мышлению. $s = StringRegExpReplace("ab12", "[a-z]","1") А так действительно работает! Зачем же тогда нужно [:alpha:], ну уже хоть что-то получилось! ![]() |
|||
------- Последний раз редактировалось semiono, 17-11-2010 в 22:37. Отправлено: 22:19, 17-11-2010 | #4 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать |
|
Отправлено: 22:45, 17-11-2010 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать А как можно файл построково читать, чтобы сравнивать строки с шаблоном?
Понятное дело надо найти @CRLF, только как ? Я думаю можно организовать как цикл через If <проверка строки с образцом> then <идти дальше или заменить> что-то типо того. |
------- Отправлено: 22:46, 17-11-2010 | #6 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать If $strokVBloke > 1 Then; если строк больше одной ;Заносим в массив последнюю строку, с 1-го символа и до ограничения $ArrayDlinStroka[$strokVBloke] = StringMid ($CurrentLine, 1, $ZnakKonecPost ) EndIf ;ПРИБАВЛЯЕМ ПО ОДНОЙ СТРОКЕ, ЗАПИСЫВАЯ В МАССИВ, ПОКА НЕ НАЙДЁМ КОНЕЦ While $NumCurrentLineFileInput <= $chisloStrokCurrentFile ;Смотрим, кончается ли строка конечным вхождением ; ИЩЕМ КОНЕЦ СООБЩЕНИЯ! ; Устанавливаем искомую строку $entry = 'что-то там' ; регистр не важен, т.к 'что-то там' бывает маленькими ;Читаем строку № $NumCurrentLine из файла $fileIn $CurrentLine = FileReadLine ( $fileInput, $NumCurrentLineFileInput ) ;Ищем вхождение $entry с учётом регистра или без $entryFound = StringInStr ($CurrentLine, $entry , 0 , 1 ) If $entryFound > 0 Then If $strokVBloke = 1 Then; если вхождение найдено в 1-й строке ;Считаем конец $StrokaKonecPost = $NumCurrentLineFileInput $ZnakKonecPost = $entryFound - 20 ;Заносим в массив единственную строку $ArrayDlinStroka[$strokVBloke] = StringMid ($CurrentLine, $ZnakNachaloPost, $ZnakKonecPost) EndIf ExitLoop ;выход из цикла, если вхождение найдено EndIf ;MsgBox (0, "Вхождение?", $entryFound) If $strokVBloke = 1 Then; если вхождение найдено в 1-й строке ;Заносим в массив первую строку (ограничение сначала) $ArrayDlinStroka[$strokVBloke] = StringMid ($CurrentLine, $ZnakNachaloPost) Else ;Заносим в массив строку без ограничения по длине $ArrayDlinStroka[$strokVBloke] = StringMid ($CurrentLine, 1 ) EndIf ;MsgBox (0, "Строка в массиве", $ArrayDlinStroka[$strokVBloke]) ;увеличиваем счётчики $strokVBloke = $strokVBloke + 1 $NumCurrentLineFileInput = $NumCurrentLineFileInput + 1 WEnd |
Отправлено: 22:49, 17-11-2010 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата semiono:
$sData = 'Some text' & @CRLF & 'The End' $sRet = StringRegExpReplace($sData, '(?s)\w+ (.*) End', '\1') ConsoleWrite($sRet & @LF) |
|
------- Отправлено: 23:01, 17-11-2010 | #8 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать а что значит заменить на '\1'
--- "Match any "word" character: a-z, A-Z, 0-9 or underscore (_)." Проверка букв из слов ![]() Что-то у них слишком много паттернов того что очевидно, но только наоборот сбивающих с толку. Повторов тоже что-то много. "Repeat the previous character, set or group 0 or more times." а это буквально значит ноль или более раз ![]() Причём ещё и эквивалентно другому паттерну ;- ато нам одного этого не хватит ))) Интересно было бы русскую справку почитать, пойду поищу. Моя идея с поиском конца строки, тоже не клеится, так как мне никто не будет возвращать ни строку перед @CRLF ни её длину. Функции какие-то ограниченные. Подходящего ничего не вижу. Впрочем, FileReadLine меня заинтересовала, надо потестировать это... Ух! Она читает по строкам! Спасибо, Redisych за подсказку! |
------- Последний раз редактировалось semiono, 17-11-2010 в 23:59. Отправлено: 23:30, 17-11-2010 | #9 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать А как можно StringRegExp() часть строки протестировать? Сравнить с шаблоном.
[пробелы в начале] [нужная часть строки] [не нужная часть строки] Пробелы вначале можно убрать так (?m) или точкой . Далее не знаю... Строка содержит < скобки > слеш / "двойные кавычки" равно = и буквы... ASCII вобщем, поправте если ошибаюсь? |
------- Отправлено: 00:19, 18-11-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
xampp для чайников | binders | Вебмастеру | 1 | 23-04-2014 19:05 | |
Разгон видеокарты NVidia для чайников | Dabaduch | Разгон, охлаждение и моддинг | 33 | 28-01-2013 16:38 | |
Система - Программа для работы с разделами "для чайников" | Alla65 | Программное обеспечение Windows | 1 | 20-04-2009 17:58 | |
Тихая установка для чайников | MedVetoff | Автоматическая установка приложений | 5 | 16-10-2008 22:04 | |
Инструкции для чайников | Tanya | Хочу все знать | 22 | 25-02-2004 00:42 |
|