关于Word VBA查找替换(含通配符)的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:38:49
谁能帮忙解释一句下面这个含有通配符的text什么意思?只要解释这一句即可。
With Selection.Find
.Text = "<(Subject)\\*([^11^13]){1}" '这句请详细解释一下
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
谢谢!^11与^13这里是或的关系?
实际需求是,有很多这种字符串:Subject\folderName\subfolderName\title,有没有别的办法批量修改最后得到title。
如果能告知更简便、更便于理解的方法,我就加到100分,给个满分。^_^
-------------------------------------------------
是的,title后一定会回车换行的,就是文档中的小标题啊。不光是这个替换操作啦,还有其他操作,所以用VBA一块儿做了,方便。
可惜我还是没完全看懂,([!\\]@)啥意思?
我在想,找到 Subject\ 后再找到最后的的换行符,然后反向搜索最后一个反斜杠\,将这个\连同之前的内容删除。这样不知行不?
你懂得比较多,能不能告诉我哪里可以找到类似的说明和例子?我想仔细学习了解一下这些符号的含义。学会了我就可以自己考虑了。

< 标识单词开始,也就是说这里要匹配一个整词,前面要么是空格,要么是标点符号等。

(Subject) 匹配“Subject”这个单词。用圆括号括起来的是让它成组,同时本来也可以在替换内容中通过“\1”来指代它。但是我看粘贴出来的代码里面替换内容为空,所以我觉得这个圆括号可有可无。

\\ 匹配“\”这个字符。因为“\”本身在查找控制字符里面具有特殊的控制意义(转义),所以要匹配它自己就必须在前面再加一个“\”进行转义。

* 匹配0到任意多个任意字符

([^11^13]){1} 匹配一个换段符(^13,在文档里面是直接键入ENTER得到)或者一个段内换行符(^11,在文档里面键入SHIFT+ENTER得到)。方括号的意思是匹配方括号里面这个集合中的任意字符。“{n}”表示匹配n次,所以“{1}”就是匹配1次了。至于那个圆括号,和上面提到的圆括号的功能相同,同样我觉得这里使用是多余的。

整句话的意思,就是要找到形如“Subject\ajdslfjasdlf”文字,且它后面必须是一个换段或者段内换行。

__________________
补充:

楼主说的没错,^11^13在这里是可以理解成或者的关系。

请问楼主提到的需求中,title后面是不是一定会有一个回车?

如果是这样的话,可以直接在Word查找替换对话框中用这个查找串: <Subject*\\<([!\\]@)[^11^13] ,替换为:\1 。

选中通配符后做全部替换即可。

应该是不需要VBA的吧?楼主可以先试试看,如果不行我再想办法。

___________________
再补充:

([!\\]@) 的意思就是匹配一个不包含“\”(这个由“[!\\]”来控制)的字