用户登录
用户注册

分享至

wordvba通配符匹配表达式

  • 作者: 快乐宝贝逗你玩
  • 来源: 51数据库
  • 2020-04-21

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

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

(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的吧?楼主可以先试试看,如果不行我再想办法。

___________________

再补充:

([!\\]@) 的意思就是匹配一个不包含“\”(这个由“[!\\]”来控制)的字符串,这个字符串由至少一个字符组成(这个由“@”来控制)。

所以,我的整个查找串的意思就是,查找一个“Subject”开头,后面有若干字符,最后一个反斜杆的后面有一个字符串,再往后就是一个回车。

当然,如果不想用通配符,当然自己写代码也是能做到了。但是就得自己去分析整个字符串,会需要考虑很多因素和可能的变化,代码会写得很复杂。此外,Word查找替换的通配符,是Word中很重要的一个功能,掌握它能够为平时的工作带来的很大便利。所以还是值得去研究一下的。

其实我就是看Word自带的帮助啊……在Word里面键入F1,然后输入关键字“查找替换”,好象返回的第一条就是我看的那个帮助,里面有这些控制符号的解释。

不过Word的查找替换对于模糊查询的支持总的来说还是比较弱。要想做到更精确、更复杂的搜索条件,还是需要用到正则表达式。这个可以在网上搜索一下“VBA 正则表达式”。

在EXCEL里如何实现类似WORD里的通配符的查找功能?如果用VBA

在查找之前,我们要做的事是,“编辑”→“查找”→“高级”,点选“使用通配符”之后,在“查找内容”框内填上要查找的文字和通配符。

关于通配符的用法:

1.“”:

①关于“>;”。使用该通配符可以用来指定要查找对象的结尾字符,比方说,要是你记不清所要查找对象的完整内容了,但记得要查找对象的结尾字符是某个特定的字符,此时大家就可以用“>;”附在这个特定字符的后面,然后Word就会自动去查找这个特定字符,从而让我们看到我们要找的目标。例如,在查找对话框中输入“up>;”的话,Word查找工具就会在当前文档中查找到以“up”结尾的所有目标对象,例如会找到“setup”、“cup”等等对象。如果查找的是汉字目标,我们要注意的是,查找的汉字应该是结尾字词(后面应该有标点符号分隔)。

②关于“”正好是相对的一组通配符,所以,我们可以用它来查找以某字母开头的对象。

2.“@”:该通配符可以用来查找字符中包含一个以上的前一字符。例如,如果输入“me@n”的话,Word查找工具就可以找到“men”、“meen”之类的字符内容了。

3.“?”:“?”代表任意单个字符,当大家不清楚查找目标中指定位置的内容是什么的时候,就可以用“?”来代替,几个“?”就代表几个未知字符。例如,在查找对话框中输入“?土”的话,Word查找工具就可以找到类似“黑土”、“黄土”之类的目标内容;输入“??土”的话,就能找到“五色土”之类的内容。

4.“*”:“*”可以用来代替任意多个字符,比如我们输入“*国”,就可以找到“大国”、“法兰西国”、“中华人民共和国”等字符串内容。

5.“[]”:该方框内的单个字符可以是指定要查找的字符之一,例如要是输入“[高矮]个”的话,Word查找工具就可以找到“高个”、“矮个”等内容。

6.“{}”:可以用来指定要查找的字符中包含前一字符的个数,比如输入“lit{1}le”就是说包含1个前一字符“t”,可以找到“litle”,输入

“lit{2}le”就是说包含2个前一字符“t”,可以找到“little”。

7.“[-]”:该通配符是用来指定范围内的任意单个字符,要是在查找对话框中输入“[a-c] mend”的话,Word查找工具就可以找到“amend”、“bmend”、“cmend”等字符内容。

通配符可以单独使用,但我们还可以把多个通配符使用一定的技巧组合起来,这样就可以使查找达到更精确的效果,比方说我们输入“”,就表示查找的是所有以“江山”开头并且以“多娇”结尾的字符串,当然,具体如何组合,就需要我们在以后的学习和实践中去摸索了。

word通配符-在word中通配符的使用如何在word中使用通配符,一次性

如果仅是把(道”)替换成(道“) 那就太简单了。

如果还有(说”)替换成(说“) 之类,如果是一本书有N个这种情况,我也找到了解决办法,并不复杂: 在WORD的“编辑”选“查找和替换”,在下面的“搜索选项”中勾选“使用通配符”,在“查找内容”框中输入 >” 也可以在“特殊字符”里选“单词结尾”,然后要输一个右引号 >表示单词结尾 在“替换”框中输入 ^q“ 也可以在“特殊字符”里选“查找内容”,然后要输一个左引号 ^q表示查找的内容重复,然后全部替换即可,这样后一个双引号前面一般是标点符号,不在替换之列。

word vba 批量替换(标记)

Set myRange = ActiveDocument.Content myRange.Find.Execute FindText:="2", ReplaceWith:="1", Replace:=wdReplaceAll Set myRange = ActiveDocument.Content myRange.Find.Execute FindText:="2", ReplaceWith:="1", Replace:=wdReplaceAll Execute 方法(Find 对象) 运行指定的查找操作。

如果查找成功,则返回 True。(这说明其是同步执行) 语法 expression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl) expression 必需。

该表达式返回 Find 对象。 FindText Variant 类型,可选。

指定需查找的文本。可用空字符串 ("") 查找格式。

也可通过指定适当的字符代码查找特殊字符。例如,“^p”对应段落标记,“^t”对应制表符。

如果需要使用特殊字符列表,请参阅查找替换特殊字符和文档元素示例。 如果 MatchWildcards 为 True,则可以指定通配符及其他高级搜索条件。

例如,“*(ing)” 将查找以“ing”结尾的所有单词。详细内容,请参阅通配符搜索示例。

若要搜索符号字符,可键入 (^) 字符,零(0),然后键入符号字符的代码。例如,“^0151”对应一条长划线(—)。

MatchCase Variant 类型,可选。如果是 True,则查找文本需区分大小写。

相当于“编辑”菜单“查找和替换”对话框中的“区分大小写”复选框。 MatchWholeWord Variant 类型,可选。

如果为 True,则只查找匹配的完整单词,而并非作为一个长单词的一部分的文字。相当于“编辑”菜单“查找和替换”对话框中的“全字匹配”复选框。

MatchWildcards Variant 类型,可选。如果为 True,则查找的文字包含特殊搜索操作符。

相当于“编辑”菜单“查找和替换”对话框中的“使用通配符”复选框。 MatchSoundsLike Variant 类型,可选。

如果为 True,则查找与待查找文字发音相近的单词。相当于“编辑”菜单“查找和替换”对话框中的“同音”复选框。

MatchAllWordForms Variant 类型,可选。如果为 True,则查找文字的所有形式(例如,“ sit” 将包含“sitting”和“sat”)。

相当于“编辑”菜单“查找和替换”对话框中的“查找单词的各种形式”复选框。 Forward Variant 类型,可选。

如果为 True,则向下(向文档尾部)搜索。 Wrap Variant 类型,可选。

如果搜索从不是文档开头的位置开始,并到达文档末尾(如 Forward 设置为 False,则相反),用本参数控制接下来的操作。当在选定内容或区域中没有找到搜索文字时,本参数也控制接下来的操作。

可以是下列 WdFindWrap 常量之一: 常量 描述 wdFindAsk 搜索完所选内容或者区域后,Microsoft Word 会显示一条消息,询问是否搜索文档的其他部分。 wdFindContinue 到达搜索区域的开始或者结尾时,继续执行查找操作。

wdFindStop 到达搜索范围的开始或者结尾时,停止执行查找操作。 Format Variant 类型,可选。

如果为 True,则查找格式而非文字。 ReplaceWith Variant 类型,可选。

替换文字。要删除由 Find 参数指定的文字,可使用空字符串 ("")。

与 Find 参数相似,本参数也可以指定特殊的字符和高级搜索条件。要将图形对象或者其他非文本项指定为替换内容,可将这些项目置于“剪贴板”上,然后将 ReplaceWith 指定为“ ^c”。

Replace Variant 类型,可选。指定执行替换的个数:一个、全部或者不替换。

可为下列 WdReplace 常量之一:wdReplaceAll、wdReplaceNone 或 wdReplaceOne。 MatchKashida Variant 类型,可选。

如果为 True,则查找结果应与阿拉伯语文档中区分 kashidas 的文本相匹配。由于选择或安装的语言支持不同(例如,美国英语),此参数可能不可用。

MatchDiacritics Variant 类型,可选。如果为 True,则查找结果应与区分音调符号的语言文本相匹配。

由于选择或安装的语言支持不同(例如,美国英语),此参数可能不可用。 MatchAlefHamza Variant 类型,可选。

如果为 True,则在阿拉伯语文档中,查找内容应与区分 Alef Hamzas 的文本相匹配。由于选择或安装的语言支持不同(例如,美国英语),此参数可能不可用。

MatchControl Variant 类型,可选。如果为 True,则在从右到左运用语言的文档中,查找内容应区分双向控制字符。

由于选择或安装的语言支持不同(例如,美国英语),此参数可能不可用。 说明 除非另外指定,否则替换文本将沿用文档中被替换文本的格式。

例如,如果用“xyz”替换“abc”,那么粗体“abc”将被粗体字符串“xyz”所替换。 同样,如果 MatchCase 为 False,那么查找到的大写文本将被大写的替换文本替换,而无论搜索文本和替换文本是否大小写。

上例中,“ABC”将被“XYZ”替换。

转载请注明出处51数据库 » wordvba通配符匹配表达式

软件
前端设计
程序设计
Java相关