セル境界に一致する正規表現

セル境界に一致する正規表現

Microsoft Word には、セルの境界を一致させるための正規表現ソリューションがありますか?
最近、スペースで始まるセルがいくつかあるテーブルがあり、それらを削除する必要がありました。残念ながら、^文字列の先頭を一致させることは .NET では可能ですが、Word の検索と置換ではできません。また、^pワイルドカードを使用しないと、必要なものが見つかりません。

同様に、私はよくドキュメントを操作しますが、Word の正規表現はセルの境界を何らかの方法で管理できますか? (複数のセルにまたがるテキストの検索、セルの末尾の一致、表内のみの検索など)

答え1

Word から離れないように、次のアプローチを試しました。今回は、VBA で使用できる Regex に基づいています。

Visual Basic エディターを開きます (Alt+F11)
参照を追加します:
ツール --> 参照設定 --> Microsoft VBScript 正規表現 5.5

Sub RemoveInitialSpacesInTablesCells()
Dim NoOfRows As Integer
Dim NoOfColums As Integer
Dim CellValue As Variant
Dim RegEx As RegExp
Dim Expr As String
Dim tbl As Table
Dim temp As String

Set RegEx = New RegExp
Expr = "^(\s+)"

For Each tbl In ActiveDocument.Tables
    NoOfRows = tbl.Rows.Count()
    NoOfColums = tbl.Columns.Count()
    For i = 1 To NoOfRows
        For j = 1 To NoOfColums
            CellValue = tbl.Cell(i, j)
            RegEx.Global = True
            RegEx.IgnoreCase = False
            RegEx.MultiLine = False
            RegEx.Pattern = Expr
            temp = RegEx.Replace(CellValue, "")
            If Len(temp) > 2 Then
                temp = Left(temp, Len(temp) - 2)
            End If
            tbl.Cell(i, j).Range.Text = temp
        Next j
    Next i
Next tbl
End Sub

この関数からの出力例
INPUT - ルールが適用される前のセルの値を表します
OUTPUT - ルールが適用された後のセルの値を表します

INPUT = "
" OUTPUT

= ""
INPUT

= " " OUTPUT = "" INPUT = "
a" OUTPUT = "a              " INPUT = " a              b" OUTPUT = " a b" INPUT = " " OUTPUT = "" INPUT = " c " OUTPUT = "c" INPUT = " a                           b" OUTPUT = "a                           b"




























答え2

記載されているシナリオを再現してみましたが、以下の方法がうまく機能しているようです。

再現手順:
1. Word 2007 を開きます
2. Ribbon.Insert.Table -->2x2 Table
3. Table1.Cell(0,0) = 'a'、Table1.Cell(0,1) = 'b'、Table1.Cell(1,0) = 'c'、Table1.Cell(1,1) = 'd'
4. Ribbon.Insert.Table -->2x2 Table
5. Table2.Cell(0,0) = 'e'、Table2.C(0,1) = 'f'、Table2.Cell(1,0) = 'g'、Table2.Cell(1,1) = 'h'
6. Office Button.Save As.Other Forats -->Word XML Document (*.xml)
7. Notepad++ でファイルを開きます (私のバージョンは 6.6.9 です)

観察:
1. Word 文書に作成したテーブルの数に関係なく、各テーブルは <w:tbl> タグ内にあります。
2. 値がスペースで始まっていない場合は、次の構造になります <w:t>myValue</w:t>
3. 値がスペースで始まる場合は、次の構造になります <w:t xml:space="preserve"> myValue</w:t>

結論:
1. 削除する必要があるのは ' xml:space="preserve"' と myValue の前のスペースのようです
。2. 正規表現の置換が必要です。

解決:
1. N++ で Ctrl+H と入力します (またはメニュー > 検索 > 置換 > 置換タブ > 検索モード = "正規表現")
2. 「置換後の文字列:」は空白のままにし、「検索する文字列:」には式 '(?<=xml:space="preserve">)(\s+)' (// 引用符を除く) を使用し、「すべて置換」をクリックします
3. 「置換後の文字列:」は空白のままにし、「検索する文字列:」には式 ' xml:space="preserve"' を使用し、「すべて置換」をクリックします
4. ドキュメントを保存します
5. Word でドキュメントを開きます
6. doc(x) として保存します

関連情報