Czy istnieje sposób wyszukiwania wzoru w dokumencie MS Word?


30

Czy istnieje sposób wyszukiwania wzorców w dokumencie MS Word zamiast dokładnego dopasowania?

Mam dokument, w którym wszystkie miejsca dziesiętne zostały zapisane jako /zamiast .. Na przykład 1.02został napisany jako 1/02, ponieważ perska typografia używa /zamiast .kropki dziesiętnej.

Czy /jest używany nie tylko do ułamków dziesiętnych i ma inne zastosowania, na przykład ułamki, procenty itp., Czy istnieje sposób na znalezienie wzoru podobnego N/Mdo dokumentu słownego, gdzie Noznacza dziesiętną, a Mtakże pokazuje inną liczbę dziesiętną?


2
Jak to nie jest duplikat później niż 5 lat po uruchomieniu Super User?
Peter Mortensen


Cóż, trudno byłoby przenieść go do notatnika, gdyby na środku był inny tekst, załóżmy, że pisze się artykuł w czasopiśmie (zamiast tego należy użyć lateksu), więc nie można go wyrzucić z słowa lub coś w tym rodzaju, straciłby wszystkie pozostałe formatowanie.
Charm_quark,

1
Właśnie zweryfikowałem: najnowsze wersje MS Word przechowują dokumenty Word (* .docx) jako skompresowane dokumenty XML. Gdy wiesz, jak działa ta struktura, możesz rozpakować plik * .docx i wykonać dopasowanie do wzorca w wynikowych strukturach plików XML.
Dominique,

@Dominique, które jest interesujące. Nie wiedziałem o tym
codezombie

Odpowiedzi:


12

jak „N / M” w dokumencie słownym, gdzie N oznacza liczbę dziesiętną, a M pokazuje także inną liczbę dziesiętną

Tylko do wyszukiwania, którego możesz użyć ^#/^#jako parametru wyszukiwania. W obszarze więcej opcji i znajdź opcję Specjalne są jeszcze inne opcje, które mogą być pomocne.

Nb:, ^#to jedno miejsce po przecinku, więc jeśli szukasz konkretnie x / yy, to byłoby ^#/^#^#itd.

zamienić,

Jest to lepsza opcja, wykonaj wyszukiwanie za pomocą ([0-9])/([0-9])i zamień na \1.\2oraz włącz „używaj symboli wieloznacznych”


Dzięki. to trafia. ale Word nie akceptuje ^ #. ^ # dla części zamiennej. Chcę pozostawić nienaruszone cyfry otaczające „/” i zastąpić „/” przez „.”.
codezombie

1
spróbuj przeprowadzić wyszukiwanie z tym, „([0-9]) / ([0-9])” i zamień na „\ 1. \ 2”, wyjmij podwójny cudzysłów. i włącz „użyj symboli wieloznacznych”
Charm_quark

37

Słowo

Użyj implementacji wyrażeń regularnych przez Microsoft

Naciśnij CTRL+ H»kliknij Więcej » Włącz Użyj symboli wieloznacznych

  • Znajdź co: ([0-9]{1,2})/([0-9]{2})
  • Zamienić: \1.\2

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

To wygląda na zwariowany wzorzec wyszukiwania, więc zbadajmy go:

  • [0-9] oznacza pojedynczą wartość liczbową (0,1,2,3,4,5,6,7,8 i 9)
  • {1,2}służy do zliczania wystąpień poprzedniego znaku lub wyrażenia. W naszym przypadku oznacza to: Szukaj tylko jednej lub dwóch cyfr .

    Uwaga: jeśli używasz niemieckiego słowa, musisz użyć ;jako separatora zamiast,

  • /nie ma specjalnego znaczenia. Dosłownie szuka ukośnika
  • ()okrągłe nawiasy są ważne. Dzielą wzór do sekwencji logicznych, dzięki czemu możemy później wykorzystać \1, \2... \nw naszym zastąpić wzorem. W ten sposób zachowujemy wartości

Przeczytaj więcej w sekcji Wyrażenia, kawałek po kawałku w artykule wsparcia Microsoft lub na stronie Graham Mayor's Word


VBA (lepsze rozwiązanie)

Sugeruję użycie metody VBA, która bardziej odpowiada domyślnym ustawieniom innych silników RegEx. Są lepiej udokumentowane i więcej osób może ci pomóc.

To makro prosi o wzorzec RegEx do przeszukania całego dokumentu i zastąpienia go podanym ciągiem.

Naciśnij ALT+, F11aby otworzyć edytor VBA. Wklej kod w dowolnym miejscu i uruchom goF5

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")    
    On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("Find what:")
    ActiveDocument.Range = _ 
        RegEx.Replace(ActiveDocument.Range, InputBox("Replace with:"))        

End Sub
  • Znajdź co: (?!\d)/(?=\d)
  • Zamienić: .

wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.