Regex: виберіть порожні пробіли з певної вкладки та замініть їх одним пробілом [дублікат]


0

привіт і з новим роком!

у вас є невелика проблема з більш ніж 2000 .html файлами. Мені потрібно вибрати всі порожні пробіли з наступного конкретного тегу та замінити лише один пробіл.

<p class="test_formal"> This is my text <em>and all of this</em> I have to go home .</p>

Мій регулярний вираз не дуже хороший :(

Пошук: (?s)(?:\G)|<p class="text_formal">).*?|.*(?=</p>)|+\h

Замінити на: (Leave one space)

Відповіді:


1
  1. Виберіть частину, в якій потрібно внести зміни
  2. Ctrl + H
  3. Знайдіть що: +(пробіл та знак плюс)
  4. Замініть на: (просто пробіл)
  5. Перевірте In selection(або натисніть Alt + I)
  6. Натисніть Replace allкнопку (або натисніть Alt + A)

Це все :)


У мене більше 2000 .html файлів. Не можу цього зробити :)
Роб Роб

Це замінить декілька пробілів скрізь у файлі. Вони хочуть замінити ТОЛЬКО всередині<p..> ... </p>
Toto

0
  • Ctrl+H
  • Знайти що: (?:^<p class="text_formal">|\G)\K\s*(\S+)
  • Замініть на: $1 # пробіл та $ 1
  • перевірити Загорнути
  • перевірити Регулярне вираження
  • Replace all

Пояснення:

(?:                             # start non capture group
    ^                           # beginning of line
    <p class="text_formal">     # literally
  |                             # OR
    \G                          # restart from last match position
)                               # end group
\K                              # forget all we have seen until this position
\s*                             # 0 or more spaces
(\S+)                           # group 1, 1 or more any character that is not a space

Результат для наведеного прикладу:

 <p class="test_formal"> This is my text <em>and all of this</em> I have to go home .</p>

Тото, $1 # a space then $1значить $1 $1? Ви впевнені, чи не так $1 $2? Чи можете ви зробити приклад на regex101.com ? Я не думаю, що це працює. Крім того, здається, що регулярний вираз зводить всі рядки в один рядок. спробуйте регулярно виразитись на таких же лініях
Роб Роб

@RobRob: Я маю на увазі, що заміна - це пробіл, за яким слід $1. Погляньте на повторне запитання.
Тото

так, добре, проблема полягає в тому, що регулярний пересув переміщує всі рядки в одному рядку. І це не тільки вибрати конкретну вкладку, але все теги :) regex101.com/r/ybSQFD/1
Rob Rob

@RobRob: Я більше не можу зробити, вибачте. Подивіться на повторне запитання. Якщо це не працює, вам доведеться написати сценарій улюбленою мовою сценаріїв.
Toto

щось із цього буде легше, якщо можливо: Пошук: <p class="test_formal">[^\S\r\n]+(.*)</p>Замінити:(leave one space)
Роб Роб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.