셀 경계와 일치하는 정규식

셀 경계와 일치하는 정규식

Microsoft Word에 셀 경계를 일치시키는 정규식 솔루션이 있습니까?
최근에 공백으로 시작하는 여러 셀이 있는 테이블이 있었는데 이를 제거해야 했습니다. 불행히도 ^문자열 시작 부분을 일치시키기 위해 .NET에서는 사용할 수 있지만 단어 찾기 및 바꾸기에서는 사용할 수 없습니다. 또한 ^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"
출력 = "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.Save As.Other Forats-->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. 제거해야 할 것은 myValue 앞의 ' xml:space="preserve"' AND 공백인 것 같습니다.
2. 정규식 교체가 필요합니다.

해결책:
1. N++에서 Ctrl+H를 입력합니다(또는 메뉴-->검색-->바꾸기-->탭 바꾸기-->검색 모드 = "정규 표현식").
2. '바꾸기:'에서 빈 값을 남겨두고 '찾기'에 무엇:' 이 표현식 '(?<=xml:space="preserve">)(\s+)'(// 따옴표 제외)를 사용하고 '모두 바꾸기'를 클릭합니다.
3. '다음으로 바꾸기:'에 빈 값을 남겨두고 '찾을 내용:' 이 표현식 'xml:space="preserve"'를 사용하고 '모두 바꾸기'를 클릭합니다.
4. 문서 저장
5. Word에서 문서 열기
6. doc(x)로 저장

관련 정보