正则表达式删除行包含 Office Word 2013 中的结果

正则表达式删除行包含 Office Word 2013 中的结果

我有一个 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 帮助。

https://support.office.com/en-ca/article/Find-and-replace-text-by-using-regular-expressions-Advanced-eeaa03b0-e9f3-4921-b1e8-85b0ad1c427f

答案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 位以上

希望有帮助

感谢以上两位

相关内容