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

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


Сообщения - Arex

Страницы: [1] 2 3 ... 5
1
а как удалить CR?
Этот символ в регулярных выражениях обозначается метасимволом \r. Нужно просто заменить его на пустое место.
<Item> <Find>\r</Find> <Replace></Replace>  <Checked>1</Checked>  <Flags>r</Flags>  </Item>
2. Как удалить одинаковый текст, но подставить разное значение, например:
В файле "1.html" нужно "ТЕКСТ1" заменить на "ТЕКСТ2". А в файле "2.html" нужно "ТЕКСТ1" заменить на "ТЕКСТ3".

Возможно ли указать программе, что мне нужно работать не с папкой а с файлом?
Поставить галочку только напротив нужного файла (или файлов) и произвести нужную замену только в этом файле. По-другому в самой программе никак.


Есть ещё один способ, полезный в случае, если замены применяются ко множеству файлов, часть которых вперемешку. Программу можно запустить и из командной строки с помощью команды вида
"UV FilesCorrector.exe" "Files.txt" "Replaces.lst"
Для этого в вышеприведённом примере нужно:
  • добавить замену "ТЕКСТ1" на "ТЕКСТ2" и сохранить список, например, как Text2.lst
  • добавить замену "ТЕКСТ1" на "ТЕКСТ3" и сохранить список как Text3.lst
  • внести 1.html и прочие файлы, требующие той же замены, в общий список файлов под названием, например, text2.txt (все пути указывать лучше полностью, каждый файл отдельной строкой)
  • внести 2.html и прочие файлы, требующие той же замены, в общий список файлов под названием text3.txt
  • создать файл с расширением .bat или .cmd и записать в него команды для каждой замены, указывая полные пути
  • запустить BAT-файл

text2.txt  может выглядеть так:
E:\Projects\Test\1.html
E:\Projects\Test\1_1.html
E:\Projects\Test\1_2.html

BAT-файл может выглядеть так:
"D:\Progs\UV FilesCorrector\UV FilesCorrector.exe" "E:\Projects\Test\text2.txt" "D:\Progs\UV FilesCorrector\Text2.lst"
"D:\Progs\UV FilesCorrector\UV FilesCorrector.exe" "E:\Projects\Test\text3.txt" "D:\Progs\UV FilesCorrector\Text3.lst"

2
Я сам сделал ту же самую ошибку, а потом внимательно не проверил.  ::)
[^\n]*params\);\s*?\nзаменить на пустую строку

Ещё я в тот раз наконец-то понял, что именно нужно удалить.

В общем так. В первоначальной замене нужно было экранировать не только скобку, но и слэши. Кроме того, там лишний знак "=", который стоит сильно позже var. Кроме того, стоит поменять жадную квантификацию на ленивую. В итоге получается:
<script type="text\/javascript"><!--\s*var .*? params\);\s*\/\/--><\/script>
Кроме того, можно сделать более общие правила для удаления подобных скриптов. Например, так:
<script type=[^>]*?><!--.*?--><\/script>

3
Тема названа неправильно, при приведённом выше использовании скобки программа не могла не выдать ошибку. Советую почитать подробнее про метасимволы регулярных выражений.

Если я правильно понял, нужно удалить строку, оканчивающуюся на params);
Для этого нужно заменить
[^\n]*params);\s*?\nна пустую строку

4
А вас не пугают скобочки?
Совершенно не пугают, нужно правильно ими пользоваться.

как сказать, что скобка часть текста, а не часть регулярного выражения?
Если скобки в тексте, нужно использовать соответствующие метасимволы: \( и \)
Для квадратных скобок - \[ и \]

5
Спасибо, не пойму почему так сложно
А не (скажем) так:
<!-- Mirrored from .* -->[nw]
Чисто теоретически, если у тебя будет текст вида
текст 1
<!-- Mirrored from site.com/folder/_file_.htm by HTTrack Website Copier/3.x [XR&CO'2014], Mon, 06 May 2019 18:22:39 GMT -->
текст 2
<!-- any tag -->
текст 3
тогда замена "съест" лишнее, захватив и текст 2 и <!-- any tag -->

6
Я  не очень понял критерии поиска строк, которые нужно убрать. Но если нужны подобные строки, начинающиеся с Mirrored from, тогда заменяем
<!-- Mirrored from [^\n>]*?-->\r\nна пустое место.

Если критерием является дата и время в подобном формате, то заменяем
<!-- [^\n>]*?, \d+ [A-z]+ \d{4} \d+:\d\d:\d\d GMT -->\r\n
Если же нужны любые строки с соответствующим тэгом <!-- -->, то заменяем
<!-- [^\n>]*?-->\r\n

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

8
Можно!

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

Например, удаляем строки номер 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
Как-то так...

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

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

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

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

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

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

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

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

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

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