web-dev-qa-db-ja.com

Word2010ワイルドカード検索-ABC.DEF.XYZ形式のテキストを検索します

次の形式でWord2010のテキストを検索しようとしています:ABC.DEF.XYZ。これは基本的に、Word文書に記述されたJava構文を使用して、コード参照を見つけることです。3要素の参照は単なる例であることに注意してください。実際の参照には最低2つの要素があります。 5つの要素に。

これを機能させるために、ワイルドカード(およびワイルドカード以外)の組み合わせを多数試しましたが、うまくいきませんでした。これが私が試したことのいくつかです:

  1. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    注、これは実際には2要素の参照を見つけるために機能します。より大きな文字列内のパターンを見つけるときにヒットまたはミスが発生しました(たとえば、3要素の参照の要素2と3に一致する)

  2. <([a-z0-9A-Z]@)>(.<([a-z0-9A-Z]@)>)@
    エラーが発生します-無効なパターン

  3. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    実行に時間がかかるため、Wordが15分以上ハングし、一致するものが1つも見つかりませんでした(ドキュメントは約150ページのテキストであるため、処理するには多すぎた可能性があります)

  4. <([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>.<([a-z0-9A-Z]@)>
    これを試してみると、実際にWordがクラッシュしました。

理想的には、#2の動作バージョンが理想的だと思いますが、パターンを有効にする方法がわかりません。

これが不可能な場合は、#1を使用して、すべてをキャッチできることを期待できます(特定の文字列と一致し、他の文字列と一致しない理由がわかりません)。

どんな助けでも大歓迎です。

3
zakaluka

Wordのワイルドカード検索の代わりに、WordのVBARegExエンジンを使用できます。


わかりました、タスクは次のパターンですべての文字列を見つけることでした

_###.###  
###.###.###
###.###.###.###
###.###.###.###.###
_

私が作成できる最高のパターンは

_([\w\d]{3}\.){1,4}[\w\d]{3}
_

黄色でマークされた次のヒットを返します

enter image description here

パターンの説明

  • _\w_は、A〜zの1文字に一致します。大文字と小文字は区別されません
  • _\d_は0〜9の数字と一致します
  • _[\w\d]{3}_は、ABCabc、_123_、_Ab1_のような3文字または数字に一致しますが、_A$C_またはABCDには一致しません
  • _([\w\d]{3}\.){1,4}_は、次のポイント_\._を持つ1、2、3、または4つのグループに一致します。最後のグループ_[\w\d]{3}_は次の点を要求しません

VBAマクロ

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

_Sub RegExMark()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")

    RegEx.Global = True
    RegEx.Pattern = "([\w\d]{3}\.){1,4}[\w\d]{3}"

    Set Matches = RegEx.Execute(ActiveDocument.Range)
    For Each hit In Matches
       Debug.Print hit
       ActiveDocument.Range(hit.FirstIndex, hit.FirstIndex + hit.Length). _
         HighlightColorIndex = wdYellow
    Next hit

End Sub
_

警告

サンプル画像で赤でマークされているように、現在のパターンには欠陥があり、長すぎる文字列の部分文字列にも一致します。 _\b_、_[^\.]_、_\s_で少し遊んだのですが、いずれもうまくいきませんでした。たぶん他のユーザーは有効な解決策を見つけることができますか?

使用済みリソース

1
nixda

テキストをNotepad ++にコピーしてから、RegExオプションを使用して変更を加えることをお勧めします。

苦痛に聞こえるかもしれませんが、慣れれば、プログラム間をすばやく移動できます。

RegExは、Notepad ++の[検索/置換]ウィンドウのオプションです。他のエディターにも同じ機能があります。

イワン

0
ivan walsh