|
本帖最后由 weiyingde 于 2024-8-27 15:33 编辑
我这里有一段代码:
Sub 要求匹配解析捕获四个()
Dim mt, mk, oRng As Range, n&, m&, str$, tt$, arr() As Range 'arr()不申明也没关系
Dim rg As Range, x%, dic As Object, k&, a
Set Ydoc = ThisDocument
Set dic = CreateObject("Scripting.Dictionary")
osr = Ydoc.Content
str = Replace(Replace(osr, Chr(7), ""), Chr(1), "")
With CreateObject("vbscript.regexp")
.Global = True: .Ignorecase = False: .MultiLine = True
.Pattern = "(^解析\s+)([A-D].+?)([A-D].+?)([A-D].+?)$"
For Each mt In .Execute(str)
m = mt.FirstIndex: n = mt.Length '整个解析
'ljx = Len(mt.submatches(0))
Set oRng = Ydoc.Range(m, m + n)
MsgBox oRng
Next
End With
End Sub
这段分别放在三个文档当中,执行一样的命令,完成一样的任务:锚定题目中的“解析”部分。
这三个文档,基本一样,唯一的不同是:一个文档有按钮、表格;第二个文档只有表格;第三个文档,只有文本。
为了消除表格和按钮对正则匹配目标的位置产生影响,我加了一句:
osr = Ydoc.Content
str = Replace(Replace(osr, Chr(7), “”), Chr(1), “”)
执行的结果是:有命令按钮的文档正则不能精准锚定目标位置,其他的两个文档运行正常。
我删去 str = Replace(Replace(osr, Chr(7), “”), Chr(1), “”),有表格的也不能精准定位。
这说明 Replace(osr, Chr(7), “”) 是可以消除表格对正则精准定位的干扰?
那么,Replace(Replace(osr, Chr(7), “”), Chr(1), “”)为什么不能呢?
加上一句什么代码,能够消除命令按钮所带来的影响呢?
盼高人施援手,巧破局,接难关,扫疑惑,解难题。
请分别测试三个文档……
|
|