Jak usunąć cały tekst z wyjątkiem tego, co jest w środku cudzysłowu?

3

Chcę usunąć cały tekst z wyjątkiem tego, co znajduje się między cudzysłowami.

Jak miałbym to zrobić?

Przykład:

Bran could hear the wind in the trees, the clatter of their hooves on the ironwood planks, the whimpering of his hungry pup, but Jon was listening to something else. “There,” Jon said. He swung his horse around and galloped back across the bridge. They watched him dismount where the direwolf lay dead in the snow, watched him kneel. A moment later he was riding back to them, smiling. “He must have crawled away from the others,” Jon said. “Or been driven away,” their father said, looking at the sixth pup. His fur was white, where the rest of the litter was grey. His eyes were as red as the blood of the ragged man who had died that morning. Bran thought it curious that this pup alone would have opened his eyes while the others were still blind. “An albino,” Theon Greyjoy said with wry amusement. “This one will die even faster than the others.” Jon Snow gave his father’s ward a long, chilling look. “I think not, Greyjoy,” he said. “This one belongs to me.”

Potrzebny wynik:

“There,” “He must have crawled away from the others,” “Or been driven away,” “An albino,” “This one will die even faster than the others.” “I think not, Greyjoy,” “This one belongs to me.”

Lub

There, He must have crawled away from the others, Or been driven away, An albino, This one will die even faster than the others. I think not, Greyjoy, This one belongs to me.

Chibi
źródło

Odpowiedzi:

1
  • Ctrl+H
  • Znajdź co: (?:^|\G)[^“”]*(“[^”]*”)
  • Zamień na: $1 ( Uwaga: wcześniej jest spacja$1 )
  • zaznacz opcję Zawiń się
  • zaznacz Wyrażenie regularne
  • Replace all

Wyjaśnienie:

(?:^|\G)    : non capture group, beginning of line or posiiton of last match
[^“”]*      : 0 or more any character that is not “ or ”
(           : start group 1
    “       : opening “
    [^“”]*  : 0 or more any character that is not “ or ”
    ”       : closing ”
)           : end group

Możesz użyć “([^”]*)”zamiast, (“[^”]*”)jeśli nie chcesz cytatów w wyniku.

Zastąpienie:

 $1         : a space followed by content of group 1

Wynik dla podanego przykładu:

„Tam”, „Musiał się czołgać od innych”, „Albo został odepchnięty”, „Albinos”, „Ten umrze jeszcze szybciej niż inni.” „Nie sądzę, Greyjoy”, „Ten jeden należy do mnie."

Toto
źródło
0

W edytorze CudaText możesz to zrobić za pomocą wielokrotnego wyboru.

  • okno dialogowe Znajdź, wprowadź ".+?", zaznacz opcję reg-ex
  • naciśnij „Wybierz wszystko” w oknie dialogowym
  • zaznaczony jest tekst w cudzysłowie, Kopiuj do schowka
  • Utwórz nową kartę pliku, Wklej ze schowka

Aby połączyć wynikowe linie z jednym, użyj polecenia wtyczki CudaExt „Dołącz wybrane linie”.

RProgram
źródło