Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Arex

Страницы: [1] 2 3 4
1
Здравствуйте, столкнулся с тем, что не понял возможно ли не заменять, а добавить строки/тэги, которые необходимо добавить в конце каждого из ~1000 файлов?
Заранее спасибо!
Можно, при помощи регулярных выражений. Например, так:
(.*)заменить на
$1\r\nВаша_строка

2
Можно!

При помощи регулярных выражений.

Например, удаляем строки номер 5:
^(([^\n]\n){4})([^\n]\n)заменить на
$1
Удаляем строки 1-5:
^([^\n]\n){5}заменить на пустое значение

Удаляем строки 5-7:
^(([^\n]\n){4})([^\n]\n){3}заменить на
$1
Например, удаляем строку номер 3 с конца:
([^\n]\n)(([^\n]\n){2})$заменить на
$2
Удаляем строки 3-5 с конца:
([^\n]\n){3}(([^\n]\n){2})$заменить на
$2
Как-то так...

3
Честно говоря, почему по-разному обрабатываются, я точно не скажу, зато сразу вижу, что [A-Z0-9\s]+ - это крайне неудачная конструкция. Символ \s включает в себя не только пробел, но и табуляцию (\t), и перенос строки (\r и \n). Получается, эта конструкция включает в себя все строки подряд, где нет знаков препинания.

Кроме того, в данной программе весь текст обрабатывается не построчно, а целиком. То есть символы ^ и $ означают не начало и конец строки, а начало и конец текста. Так что ставить $ в конце выражения не нужно.

В общем, я бы предложил
(Plane: \)\r\n[^\n]*?M3)1\r\nзаменить на
${1}2\r\n

4
Альтернативный вариант:
<script.*?</script>

5
.*?(Вася.*?Петя).* заменить на $1

6
Если обрабатываемый файл имеет размер 0 байт, то выскакивает ошибка:

7
Если в обрабатываемом файле имеется символ с кодом 0x00 (он же NUL, он же \x00), то обрабатывается текст только перед первым таким символом в тексте, а сам символ и последующий текст удаляются.

8
Что-то вроде такого:
(От).*?(\[\{)
заменить на
$1$2
В принципе, может потребоваться подгонка регулярки под конкретный текст, чтобы не удаляла лишнего, но не видя текст, настраивать сложно.

9
При импорте списка замен (при нажатии "Добавить из файла") теряется информация о количестве повторов замены, то есть все замены импортируются с повторением 1 раз, независимо от того, сколько у них было повторов в сохранённом списке.

10
Просто замену надо производить на $1;$2;$3;$4[nw]. Но на мой взгляд, вместо точки с запятой лучше поставить табуляцию, так и в текстовом виде  смотреть удобно, и в Excel импортировать удобно.

11
Спасибо!
Заработало. Только надо все файлы указывать в кавычках в команде запуска и с полным путем!
Да, забыл поставить. Исправил код, вдруг кому ещё пригодится.

12
В этой теме (http://uvsoftium-forum.ru/index.php?topic=4944.0) замечена вариация ошибки в XML-содержащих документах. Хотя, в отличие от описанного выше случая (http://uvsoftium-forum.ru/index.php?topic=175.msg5997#msg5997), Кодирован весь документ не в ANSI, а в UTF-8.

Причину сбоя пока не выяснил, но добавилась эта ошибка в последней версии, на предыдущей всё работает нормально. Подозреваю, что сбой происходит при анализе кодировки документа.

13
Это баг последней версии программы, она почему-то периодически сбоит на некоторых xml-подобных документах (я уже писал об этом здесь (http://uvsoftium-forum.ru/index.php?topic=175.msg5997#msg5997)). Видимо, тут тоже какие-то проблемы с кодировкой, не знаю точно.
В качестве обхода проблемы, пока разрабы не исправят ошибку, можно либо вручную удалять первую строку <?xml version="1.0" encoding="UTF-8"?>, либо воспользоваться более старой версией программы (4.3.0.24).

14
А d:\repl.txt - это текст, в котором хотите произвести замену? Если да, то именно поэтому и не работает. У программы это сделано не совсем интуитивно. В общем, я не знаю способа поставить название обрабатываемого файла напрямую, в первый параметр подставляется не сам файл, а список обрабатываемых файлов.
Тогда всё можно сделать так:
set "current=d:\current.txt"
echo d:\repl.txt > "%current%"
"d:\uvs\uvFilesCorrector.exe" "%current%" "d:\template.lst"

15
Напишите всё же, какой командой запускаете программу. Возможно ошибка в неверном вызове, а не в самой программе.

Страницы: [1] 2 3 4