MS Word文書でパターンを検索する方法はありますか?


30

完全に一致する代わりに、MS Word文書内のパターンを検索する方法はありますか?

私はすべての小数がの/代わりにとして書かれた文書を持っています.。たとえば、ペルシャのタイポグラフィでは小数点の代わりにが使用1.02される1/02ため、と記述されています。/.

/小数のために使用されるだけでなく、それは他の用途、例えば、画分、割合、等を有している、のようなパターンを見つけるための方法があるN/MWord文書内のN小数を示し、Mまた、別の進数を示しますか?


2
これは、スーパーユーザーがリリースされてから5年以上経っていないのですか?
ピーターモーテンセン14年


真ん中に他のテキストがある場合、メモ帳に移動するのは難しいでしょう。ジャーナル記事(代わりにラテックスを使用してください)を書いていると仮定しましょう。他のフォーマットはすべて失われます。
Charm_quark 14

1
確認したばかりです。最新のMS Wordバージョンは、Wordドキュメント(* .docx)を圧縮されたXMLベースのドキュメントとして保存します。この構造がどのように機能するかがわかったら、*。docxファイルを解凍し、結果のXMLファイル構造でパターンマッチを実行します。
ドミニク

@Dominiqueそれは面白いです。それを知らなかった
codezombie

回答:


12

ワードドキュメント内の「N / M」のように、Nは小数を表し、Mは別の10進数も示します。

検索のためだけに、^#/^#検索パラメーターとして使用できます。その他のオプションの下にあるSpecial見つけると、役に立つ他のオプションがいくつかあります。

Nb:^#は小数点以下1桁なので、特にx / yyを探している場合は次のようになります^#/^#^#

交換する、

これは、より良いオプションで、検索を実行し([0-9])/([0-9])、で置換し\1.\2、「ワイルドカードを使用」を有効にします


ありがとう。これはヒットを見つけます。ただし、Wordは、交換部品として^#。^#を受け入れません。「/」を囲む数字をそのままにして、「/」を「。」に置き換えたい。
codezombie 14年

1
「([0-9])/([0-9])」で検索して、「\ 1. \ 2」に置き換えて、二重引用符を削除してください。そして、「ワイルドカードを使用する」を有効にする
Charm_quark

37

ワード

Microsoftの正規表現の実装を使用する

CTRL+を押しHます»[ その他 ]をクリックし、[ ワイルドカードを使用する ]を有効にします

  • 何を見つける: ([0-9]{1,2})/([0-9]{2})
  • と置換する: \1.\2

ここに画像の説明を入力してください ここに画像の説明を入力してください

これはクレイジーな検索パターンのように見えるので、調べてみましょう。

  • [0-9] 単一の数値(0,1,2,3,4,5,6,7,8および9)を表します
  • {1,2}前の文字または式の出現回数をカウントするために使用されます。私たちの場合、これは次を意味します:1つまたは2つの数値のみを検索します。

    注意:ドイツ語のWordを使用;している場合は、代わりにセパレータとして使用する必要があります,

  • /特別な意味はありません。文字通りスラッシュを検索します
  • ()丸括弧は重要です。これらはパターンを論理シーケンスに分割するため\1、後で置換パターンで\2... \nを使用できます。この方法で値を保存します

詳細については、Microsoftのサポート記事またはGraham MayorのWordサイトの「式」をご覧ください。


VBA(より良いソリューション)

他のRegExエンジンのデフォルトにより忠実なVBAメソッドを使用することをお勧めします。彼らはより良く文書化され、より多くの人々があなたを助けることができます。

このマクロは、ドキュメント全体を検索して指定された文字列に置き換えるためのRegExパターンを要求します。

ALT+ F11を押してVBAエディターを開きます。コードをどこにでも貼り付けて実行しますF5

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
  • 何を見つける: (?!\d)/(?=\d)
  • と置換する: .

ここに画像の説明を入力してくださいここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.