有没有一种方法可以在MS Word文档中搜索模式?


30

有没有一种方法可以在MS Word文档中查找模式,而不是完全匹配?

我有一个文档,其中所有小数均写为/而不是.。例如,1.02已经被写成1/02,因为波斯印刷术使用/代替.小数点。

正如/不仅用于小数,还具有其他应用程序,例如小数,百分比等,是否有办法找到N/M单词文档中的模式,其中N表示小数,M还显示另一个小数?


2
在“超级用户”推出5年后,这又不是重复吗?
彼得·莫滕森


好吧,如果中间还有其他文本,则很难将其移动到记事本中,假设一个人正在写期刊文章(请使用乳胶),这样他们就不能将其移出单词或类似性质的东西,会丢失所有其他格式。
Charm_quark 2014年

1
我刚刚验证:最新的MS Word版本将Word文档(* .docx)存储为基于XML的压缩文档。一旦知道该结构的工作原理,就可以解压缩* .docx文件,并在生成的XML文件结构中进行模式匹配。
多米尼克(Dominique)

@Dominique很有意思。不知道

Answers:


12

类似于Word文档中的“ N / M”,其中N代表小数,M也显示另一个小数

仅用于搜索,您可以将其^#/^#用作搜索参数。在更多选项下,找到Special,还有一些其他选项可能会有所帮助。

Nb:,^#是小数点后一位,因此,如果您要专门查找x / yy,那么它将是^#/^#^#等。

取代,

这是一个更好的选择,用搜索执行([0-9])/([0-9])并替换为\1.\2,并启用“使用通配符”


谢谢。这找到了命中。但是Word不接受^#。^#作为替换零件。我想完整保留'/'周围的数字,并将'/'替换为'。'。
codezombie 2014年

1
尝试使用“([[0-9])/([0-9])”进行搜索,并替换为“ \ 1. \ 2”,取出双引号。并启用“使用通配符”
Charm_quark,2014年

37

使用Microsoft的正则表达式实现

CTRL+ H»单击更多 »启用使用通配符

  • 找什么: ([0-9]{1,2})/([0-9]{2})
  • 用。。。来代替: \1.\2

在此处输入图片说明 在此处输入图片说明

这看起来像一个疯狂的搜索模式,因此让我们检查一下:

  • [0-9] 代表单个数值(0,1,2,3,4,5,6,7,8和9)
  • {1,2}用于计数前一个字符或表达式的出现次数。在我们的例子中,这意味着:只搜索一个或两个数字

    注意:如果您使用德语单词,则必须使用;分隔符代替,

  • /没有特别的意义。它从字面上搜索斜线
  • ()圆括号很重要。他们划分模式进入逻辑顺序,所以我们以后可以使用\1\2... \n在我们的替代模式。这样我们就可以保留价值

在Microsoft的支持文章或Graham Mayor的Word网站逐一阅读表达式部分,以获取更多信息。


VBA(更好的解决方案)

我建议您使用VBA方法,该方法应更多地遵循其他RegEx引擎的默认设置。它们有更好的文档记录,更多的人可以为您提供帮助。

此宏要求使用RegEx模式搜索整个文档,并将其替换为给定的字符串。

ALT+ F11打开VBA编辑器。将代码粘贴到任何地方,然后执行F5

Sub RegexReplace()

    Dim RegEx As Object
    Set RegEx = CreateObject("VBScript.RegExp")    
    On Error Resume Next

    RegEx.Global = True
    RegEx.Pattern = InputBox("Find what:")
    ActiveDocument.Range = _ 
        RegEx.Replace(ActiveDocument.Range, InputBox("Replace with:"))        

End Sub
  • 找什么: (?!\d)/(?=\d)
  • 用。。。来代替: .

在此处输入图片说明在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.