Pasujące zakresy znaków i podziały akapitów w Find in Microsoft Word

2

Mam kilka dokumentów Worda, w których podział linii (podział akapitu) został dodany wyłącznie ze względów kosmetycznych (prawdopodobnie przez człowieka, ale może przez system OCR lub coś podobnego). Chcę usunąć te dodatkowe podziały wierszy z dokumentów. Zasadniczo „dodatkowy” podział linii to taki, który jest otoczony małymi literami po obu stronach (z opcjonalnym białym odstępem). Niestety, jeśli chcę znaleźć podziały akapitów w programie Word (^ p), nie mogę użyć klas znaków, aby znaleźć tylko małe litery ([az]) i odwrotnie.

Zasadniczo chcę użyć wyrażenia regularnego wielowierszowego na dokumencie, aby znaleźć coś takiego:

/[a-z]\s*\n\s*[a-z]/

i zamień znak nowej linii spacją. Czy jest jakiś sposób, aby wyszukać zarówno znaczniki akapitów (^ p w programie Word), jak i klasy znaków (lub ogólnie tylko małe litery)?

PRZYKŁAD:

TYTUŁ¶
To jest tekst.

nie pasowałoby, ale

ten tekst jest w jednym wierszu i
przechodzi do następnego wiersza.

będzie pasować, a „¶” zostanie zastąpione spacją.

Drewmate
źródło

Odpowiedzi:

5

Nie mogę powiedzieć z tego, co powiedziałeś, czy wiesz, że jeśli klikniesz More >>w oknie dialogowym „Znajdź i zamień” w programie Microsoft Word, pojawi się panel „Opcje wyszukiwania”, który zawiera opcję „Użyj symboli wieloznacznych”. Pamiętaj, że obsługuje on tajemniczy język wieloznaczny, a nie notację wyrażeń regularnych. Aby rozpocząć od tej opcji, użyj [a-z]^13[a-z]. Z jakiegoś powodu nie można używać ^pwyszukiwania wieloznacznego, ale ^13jest to odpowiednik opcji wieloznacznej ^p.

Biała przestrzeń jest trochę trudniejsza. Najlepsze, co mogę wymyślić, to to, że musisz przeprowadzić wyszukiwanie cztery razy, używając

  • [a-z]^13[a-z]
  • [a-z][^t ]{1,99}^13[a-z]
  • [a-z]^13[^t ]{1,99}[a-z] , i
  • [a-z][^t ]{1,99}^13[^t ]{1,99}[a-z]

ponieważ, co dziwne, ^tdziała w trybie wieloznacznym.  \si *nie mają na myśli tego, co oznaczają w wyrażeniach regularnych.  {n,m} ma pracę, ale nmusi być dodatnia. I pamiętaj, że nie możesz po prostu zastąpić dopasowań spacją, ponieważ ostatnia litera poprzednia i pierwsza następna litera są uwzględnione w dopasowaniu i zostałyby zablokowane.

Dla dodatkowego kredytu: możesz poszukać -(łącznika) ostatniego znaku drukującego przed podziałem wiersza; ale pamiętaj o rozwiązaniu tych dwóch (różnych) przypadków:

                                                          … Otoczone małymi
literami po obu stronach (z opcjonalnym białym odstępem). Jednak
nie…

Scott
źródło
^13było dokładnie tym, czego szukałem. Dzięki! Tak dziwne, że powoduje zmianę go podczas włączania symboli wieloznacznych. Byłoby miło, gdyby Word obsługiwał pełne wyrażenie regularne, ale ten język symboli zastępczych będzie na razie działał. PS - czy masz link do listy wszystkich ponumerowanych symboli wieloznacznych? Nie mogłem łatwo znaleźć.
Drewmate
„... tajemny język wieloznaczny, a nie notacja wyrażeń regularnych.” Dobrze wyłożone!
Sabuncu
0

^13jest równoważnym z ^p.

Jest to prawie prawda, ale zauważ, że istnieje niewielka różnica między ^13i ^p. Podziały akapitów zastąpione przez ^13wydają się tracić podwójną spację, którą uzyskuje się w normalnym stylu podziału akapitów w programie Word.

first paragraph¶

second paragraph¶

third paragraph¶

staje się

first paragraph¶
second paragraph¶
third paragraph¶

Aby rozwiązać ten problem, należy użyć ^pznaków akapitu w części zamień okna dialogowego znajdź i zamień. Ograniczenia dotyczące ^psymboli wieloznacznych dotyczą tylko części wyszukiwania okna dialogowego.

DBolton
źródło