MS Word 2016中的REGEX:从搜索中排除一个简单的字符串

时间:2017-11-03 19:03:37

标签: regex ms-word ms-office regex-negation

所以我在Regex中阅读了很多关于Negation的内容,但无法在MS Word 2016中解决我的问题。

如何排除字符串,Word,数字?

示例:

<[A-Z]{2}[A-Z0-9]{9;11}>搜索 XY123BBT22223

等字符串

但是如何排除例如像 SEDWS12WW04 这样的特殊效果?

2 个答案:

答案 0 :(得分:0)

这取决于你需要达到的目标,或者这是一个好奇心问题...... RegEx与内置的带有通配符的高级查找不同;因为你需要VBA。

根据您的需要,在不使用VBA的情况下,您可以使用空格并返回字符 - 这样的内容适用于所提供的字符串:[ ^13][A-Z]{2}[0-9]{1,}[A-Z]{1,}[0-9]{1,}[ ^13] (假设您使用正常的回车和空格你的文件)

无论如何,这是一篇关于MS Word中的通配符搜索的好文章:https://wordmvp.com/FAQs/General/UsingWildcards.htm

编辑:

根据您的进一步评论,您可能希望查看链接文章的第8部分,该部分解释了分组。对于我建议的搜索,您可以通过在“查找”中创建3个组来利用此优势。并且只修改中间组,如果确实你打算修改。使用组搜索看起来像:

([ ^13])([A-Z]{2}[0-9]{1,}[A-Z]{1,}[0-9]{1,})([ ^13])

并且替换可能如下所示:

\1 SOMETHING \3

另请注意:与RegEx解决方案相比,我的建议有点蹩脚,主要是因为与RegEx相比,MS-Words查找和替换(虽然它很好,而且确实存在)有点蹩脚......它&#39;哎呀,但它可能适合你(虽然你可能需要做一些搜索)。

但是......如果它真的是你想要的REGEX,那么你可以通过VBA访问它:How to Use/Enable (RegExp object) Regular Expression using VBA (MACRO) in word

然后......你将能够使用适当的RegEx进行查找和替换,差不多 - 我认为VBA RegEx仍有一些怪癖......

答案 1 :(得分:0)

正如其他人已经指出的那样,这在Microsoft Word的正则表达式中是不可能的。 相反,您应该使用标准的正则表达式。如果您使用集成到Microsoft Word中的称为多重查找和替换的特殊工具,则实际上可以在MS Word中使用标准正则表达式(请参阅http://www.translatortools.net/products/transtoolsplus/word-multiplefindreplace)。该工具在文档窗口右侧以窗格形式打开,其工作方式类似于“高级查找和替换”对话框。但是,除了Word现有的搜索功能外,它还可以使用标准的正则表达式语法来搜索和替换Word文档中的任何文本。

在您的特定情况下,我将使用此代码:

\ b [A-Z] {2} [A-Z0-9] {9,11} \ b(?<!\ bSEDWS12WW04)

为说明起见,此操作将搜索单词边界+ ID +单词边界,然后回溯以确保前面的字符串与[单词边界+排除的ID]不匹配。同样,您可以执行以下操作 (?<!\ bSEDWS12WW04 | \ bSEDWS12WW05 | \ bSEDWS12WW05) 排除多个ID。

多重查找和替换功能非常强大:您可以将任意数量的表达式(使用正则表达式或使用Word的标准搜索语法)添加到列表中,然后在文档中搜索所有表达式,替换所有内容,并显示所有匹配项列表,仅替换特定的匹配项,以及其他一些内容。

我为翻​​译和编辑创建了此工具,但是它对于Word中的任何高级搜索/替换操作都非常有用,并且我相信您会发现它非常有用。

最诚挚的问候,斯坦尼斯拉夫