Wpis z mikrobloga

Wykop bawi wykop uczy.. #programowanie #php

Jak w notepad++ lub innym edytorze plików xml dodać linię jeżeli jest spełniony warunek?
Przykład:

Jest

<A1>abcd</A1>
<A3>xxxx</A3>

Ma być

<A1>abcd</A1>
<A2>xxxx</A2>
<A3>yyyy</A3>

Czyli warunek:
Jeżeli w następnej linii poprzedzającej linią rozpoczynającą się od <A1> nie ma <A2> tylko jest <A3> to masz dodać (mój wklejony tekst)

Jak to zrobić??
Oczywiście jest nagroda / puszczę bliczka bądź na cel coś przeznaczę twój wybór)
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 2
@Jestem_Tutaj: nie ma warunku...

Chat GPT rozwiązał zadanie w niecałą 1s. ja p------ę to jest przerażające..

Możesz to zrobić w Notepad++ za pomocą wyrażeń regularnych w funkcji "Znajdź i zamień"
  • Odpowiedz
@Atamagaii: tryb szukania: (*) wyrażenia regularne, [x] . jako nowa linia (niekoniecznie potrzebne)
szukany tekst: <A1>(.*)<\/A1>\r\n<A3>(.*)<\/A3>
zamień na: <A1>$1</A1>\r\n<A2>$2</A2>\r\n<A3>yyyy</A3>
  • Odpowiedz
(<A1>.*?</A1>\R)(<A3>.*?</A3>)


(<A1>.*?</A1>\R) – Szuka linii <A1> i przechowuje ją w \1.

(<A3>.*?</A3>) – Szuka linii <A3> i przechowuje ją w \2.


@Atamagaii: nie do końca prawidłowo opisał co zrobił, wskazał ze jedno i drugie szuka linii z <A1>/<A3> i przechowuje ja w iteratorze, ale w pierwszym warunku nie wyjaśnił, ze użył dodatkowego znacznika \R, który - uwaga - nie we wszystkich regexach może działać tak samo, niektóre jezyki mogą ewentualnie sobie z nim
  • Odpowiedz