匹配單元格邊界的正規表示式

匹配單元格邊界的正規表示式

Microsoft Word 中有正規表示式解決方案來符合儲存格邊界嗎?
最近,我有一個表格,其中有幾個以空格開頭的單元格,我必須刪除它們,不幸的是,^.NET 中可以匹配字符串的開頭,但在單詞查找和替換中則不能;也不^p使用通配符也沒有找到我需要的東西。

同樣,我經常處理文檔,Word 的正規表示式是否能夠以任何方式管理單元格邊界? (尋找分佈在多個儲存格中的文字、符合儲存格結尾、僅在表格中尋找...)

答案1

我嘗試了以下方法來避免離開 Word。這次它是基於 VBA 中可用的正規表示式。

開啟 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"
輸出 = "a
             b"

輸入 = "



"
輸出 = ""

輸入 = "


c"
輸出 = "c"

輸入 = "



a

                          b"
輸出 = "a

                          b"

答案2

我嘗試重新創建所描述的場景,以下似乎對我有用。

重新建立的步驟:
1. 開啟 Word 2007
2. Ribbon.Insert.Table-->2x2 表
3. Table1.Cell(0,0) = 'a', Table1.C(0,1) = ' b', Table1.Cell(1 ,0) = ' c', Table1.Cell(1,1) = 'd'
4. Ribbon.Insert.Table-->2x2 表
5. Table2.Cell(0,0) = ' e', Table2.C (0,1) = 'f', Table2.Cell(1,0) = ' g', Table2.Cell(1,1) = ' h'
6. Office Button.另存為.其他格式-->Word XML文件(*.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. 在「替換為:」中保留空白值,在“查找”中保留空白值What:' 使用此表達式 '(?<=xml:space="preserve">)(\s+)'(// 不包括引號)並單擊“全部替換”
3. 在「替換為:」中保留空白值並在「尋找內容:」使用此表達式「xml:space="preserve"」並按一下「全部取代」
4. 儲存文件
5. 在 Word 中開啟文檔
6. 另存為doc(x)

相關內容