Skocz do zawartości


tablety.pl
Zdjęcie

Znajdź i zamień - Word 2007


Najlepsza odpowiedź dr_bliss, 19 03 2014 - 19:51

Wczoraj piękny post wymęczyłem z opisem, ale net mi padł i poszło w kosmos... :P Dzisiaj już mi się nie chce tyle pisać, więc będzie bardzo krótko.

 

Opis wzorca:

^ -> szukaj od początku (dla notepad++ oznacza to od początku linii)

$ -> koniec tekstu (dla notepad++ koniec linii)

 

czyli ^cos 1$ oznacza, że linia musi zacząć się od napisu cos, miec jedną spację i skończyć się na 1. Bez użycia ^ i $, "cos 1" może zostać dopasowane do dowolnego fragmentu tekstu w linii.

 

() -> oznacza grupę, używając grup można wyróżnić i ponumerować fragmenty dopasowanego tekstu

 

. -> oznacza dowolny znak (w innych programach często to jest *, ale w wyrażeniach regularnych do tego służy kropka)

 

+ -> oznacza dopasuj co najmniej 1 lub więcej znaków

 

/ - oznacza po prostu slash

 

^(/)(.+)$ -> oznacza: znajdź linię, której tekst zaczyna się od slasha i poza slashem ma co  najmniej jeden dowolny znak, slash przypisz do pierwszej grupy a całą resztę do drugiej.

 

Opis przekształcenia (na co zamienić) jest bardzo banalny: <i>\2</i>

oznacza zamień na <i> po czym wypisz zawartość tego co dopasowano jako drugą grupę (\2, gdybyś miał trzecią grupę, to odwołać możesz się do niej \3, do czwartej \4 itd.) i zakończ to </i>.

 

Więcej i dokładniej znajdziesz w google - jest pełno o wyrażeniach regularnych. Ogólnie każdy leniwy administrator i programista to zna, bo oszczędza masę żmudnej często roboty.

Przejdź do wpisu




  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 pablo-brzeg

pablo-brzeg

    First Rank

  • Użytkownicy
  • 18 postów

Napisano 15 03 2014 - 21:48

Mam napisy w formacie SRT niestety w momentach kiedy autor napisów chciał użyć kursywy zaczynał wiersz od znaku / co nie jest zgodne z formatem SRT, więc chciałbym go zmienić na zgodny czyli <i>. Nie było by w tym żadnego problemu gdyby na końcu wiersza też był jakiś znak, ale go nie ma. Zamiana wszystkich / na <i> nic mi nie da. Każdy wiersz z kursywą muszę też zamknąć za pomocą </i>. Czy da się jakoś dodać </i> na końcu każdego wiersza zaczynającego się od /

 

przykład:

 

/Your simple words

 

na

 

<i>Your simple words</i>



#2 XanTyp

XanTyp

    Expert Rank

  • Admins
  • 3887 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Headquarter

Napisano 16 03 2014 - 17:14

Dawno już nie miałem srt pod ręką. Zapodaj kawałek tekstu oryginalnego, bo nie jestem pewien czy chodzi Ci o to, o co mi chodzi ;)


Nawet, jeśli nie będę mógł pomóc, to może coś podpowiem:

1. Najpierw sięgnij do źródła, potem dopiero dzwoń po hydraulika.

2. Precyzja odpowiedzi zależy przed wszystkim od precyzji zadanego pytania.
3. Nie czytam w myślach, ale mogę powróżyć na specjalne życzenie (:


#3 pablo-brzeg

pablo-brzeg

    First Rank

  • Użytkownicy
  • 18 postów

Napisano 16 03 2014 - 21:23

5
00:00:47,200 --> 00:00:49,700
/Word up, son, word

6
00:00:52,600 --> 00:00:55,900
/Yeah. To all the killers
/and hundred dollar billers

7
00:00:55,900 --> 00:00:58,300
/Fellas

8
00:00:59,100 --> 00:01:01,700
/For real n... as
/Who ain't got no feelin's

 

PS: Już sobie z tym poradziłem. Stworzyłem prosty skrypt w programie od mojej myszki. Przesuń kursor, naciśnij, przesuń, naciśnij, shift+end, strzałka w prawo, strzałka w lewo, ctrl+v coś jak tasker. Bardzo chętnie się jednak dowiem jak to zrobić szybciej :)



#4 XanTyp

XanTyp

    Expert Rank

  • Admins
  • 3887 postów
  • Płeć:Mężczyzna
  • Lokalizacja:Headquarter

Napisano 17 03 2014 - 11:24

Metoda znajdź i zamień zadziała tylko wobec znaków istniejących więc na końcu linii niczego nie zamienisz, skoro nic tam nie ma. Jasne.

Mam Word 10 i u mnie poszło to w ten sposób że nakazałem mu zamienić wszystkie / na ciąg znaków <i> i poszło migiem, ale dopisywanie </i> to juz chyba tylko ręcznie zadziała poprze ctrl+v.

Innego wyjścia nie widzę.


Nawet, jeśli nie będę mógł pomóc, to może coś podpowiem:

1. Najpierw sięgnij do źródła, potem dopiero dzwoń po hydraulika.

2. Precyzja odpowiedzi zależy przed wszystkim od precyzji zadanego pytania.
3. Nie czytam w myślach, ale mogę powróżyć na specjalne życzenie (:


#5 pablo-brzeg

pablo-brzeg

    First Rank

  • Użytkownicy
  • 18 postów

Napisano 17 03 2014 - 17:59

No i tak też zrobiłem, ale tylko raz, resztę zrobił komputer.



#6 dr_bliss

dr_bliss

    Good Rank

  • Moderatorzy
  • 594 postów
  • Płeć:Mężczyzna

Napisano 18 03 2014 - 01:49

Nie wiem czy w Wordzie, ale na pewno w notepad++ (i wielu innych edytorach tekstu) można użyć wyrażeń regularnych.

 

Dla notepad++ ustawienia szukania (CTRL+H):

Szukany teks: ^(/)(.+)$

Zamień na: <i>\2</i>

 

Tryb szukania: Wyrażenia regularne.

 

Klikasz "Zamień wszystkie" i gotowe...



#7 pablo-brzeg

pablo-brzeg

    First Rank

  • Użytkownicy
  • 18 postów

Napisano 18 03 2014 - 20:30

Woow działa :D A mógłbyś jeszcze przy okazji tak na przyszłość wytłumaczyć co znaczą poszczególne znaki?



#8 dr_bliss

dr_bliss

    Good Rank

  • Moderatorzy
  • 594 postów
  • Płeć:Mężczyzna

Napisano 19 03 2014 - 19:51   Najlepsza odpowiedź

Wczoraj piękny post wymęczyłem z opisem, ale net mi padł i poszło w kosmos... :P Dzisiaj już mi się nie chce tyle pisać, więc będzie bardzo krótko.

 

Opis wzorca:

^ -> szukaj od początku (dla notepad++ oznacza to od początku linii)

$ -> koniec tekstu (dla notepad++ koniec linii)

 

czyli ^cos 1$ oznacza, że linia musi zacząć się od napisu cos, miec jedną spację i skończyć się na 1. Bez użycia ^ i $, "cos 1" może zostać dopasowane do dowolnego fragmentu tekstu w linii.

 

() -> oznacza grupę, używając grup można wyróżnić i ponumerować fragmenty dopasowanego tekstu

 

. -> oznacza dowolny znak (w innych programach często to jest *, ale w wyrażeniach regularnych do tego służy kropka)

 

+ -> oznacza dopasuj co najmniej 1 lub więcej znaków

 

/ - oznacza po prostu slash

 

^(/)(.+)$ -> oznacza: znajdź linię, której tekst zaczyna się od slasha i poza slashem ma co  najmniej jeden dowolny znak, slash przypisz do pierwszej grupy a całą resztę do drugiej.

 

Opis przekształcenia (na co zamienić) jest bardzo banalny: <i>\2</i>

oznacza zamień na <i> po czym wypisz zawartość tego co dopasowano jako drugą grupę (\2, gdybyś miał trzecią grupę, to odwołać możesz się do niej \3, do czwartej \4 itd.) i zakończ to </i>.

 

Więcej i dokładniej znajdziesz w google - jest pełno o wyrażeniach regularnych. Ogólnie każdy leniwy administrator i programista to zna, bo oszczędza masę żmudnej często roboty.



#9 pablo-brzeg

pablo-brzeg

    First Rank

  • Użytkownicy
  • 18 postów

Napisano 20 03 2014 - 14:28

Dziękuję, bardzo mi pomogłeś, szkoda że post Ci się usunął. Pozdrawiam i jeszcze raz dziękuję :)






Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych