我有一个 Word 文档。我的段落如下:
asdfasdfasdf
abcYear052014
asdfasdfasdf
acbYear122013
我想删除行 xxxYearyyyy,因此在 notepad++ 中输入
.*[0-9]201[0-9]$
并替换为空白。因此它删除了包含结果的行。但是当我在 Microsoft Office 2013 中尝试时,尽管选中了“使用通配符”,但它找不到任何东西。
因为我的 word 文件有粗体文本,所以我必须在 Office 中执行。我认为 Microsoft Office 不擅长正则表达式查找 :(
有什么想法或解决方案吗?
谢谢你的帮助。
看待
答案1
就像 Notepad++ 这样的源代码编辑器一样,MS Office 不支持正则表达式。
你可以尝试这个,但它并不完全起作用:
<*201[0-9]>
这是讨论 MS Office 中的通配符和正则表达式的 MS 帮助。
答案2
MS Word 正则表达式严重缺乏功能。如果您绝对需要继续使用 Word(并且找不到另一个既具有良好的正则表达式支持又保留 MS Word 标记的编辑器),我找到了一种可能的解决方法,使用 Word 正则表达式:
1)前缀每一行使用您知道不会出现在文本中的字符。输入“#”。您将得到:
#asdfasdfasdf
#abcYear052014
#asdfasdfasdf
#acbYear122013
2) 现在执行“正则表达式”搜索并替换为以下正则表达式,它将在此列表中找到第 2 行和第 4 行:
#[!#]@[0-9]201[0-9]
(阅读:以“#”开头的所有内容,然后有一个或多个不是“#”的字符(@),然后有一个数字,然后是 201,然后再次有一个数字。)
3)搜索/替换后,只需再次搜索/替换并将所有#替换为空。
您可能还可以使用 VisualBasic 宏来处理单词,快速 Google 一下就会发现 VB 确实有正则表达式。再 Google 一下就会发现 Stack Overflow 上有人已经做过类似的事情,显然: https://stackoverflow.com/questions/6128880/vb-script-to-find-and-replace-text-in-word-document
另一个选择是编写一个小脚本,例如 AHK 或 AU3 脚本,模拟以下按键:1. 按下,2. 按下 home - shift+end - ctrl+c(复制行),3. 从剪贴板抓取行并根据正则表达式进行测试,4. 如果行符合正则表达式,则按删除。我不能 100% 确定上述方法是否适用于 MS Word 标记的所有奇特可能性,但如果只是粗体行,它应该可以工作。
答案3
我已明白了。
它可以替换整个段落或行。
以我为例:
abcd abcd xxx1234 efgh asdf
因此,我在搜索办公室中选中“使用通配符”框。
在查找框中:
^13*xxx[0-9]{4,}*^13
在替换框中:
^p
(删除行或段落)或
^p(something you want to replace)^p
所以
^13 进入新行(它仅在使用通配符时在查找框中使用,而不是替换 - 如果需要,您必须使用 ^p)^p 进入新行(它可以在使用通配符或正常的情况下同时使用查找和替换)* 任何字符 xxx[0-9]{4,} xxx 和数字从 0-9 并且必须有 4 位以上
希望有帮助
感谢以上两位