所以我在Regex中阅读了很多关于Negation的内容,但无法在MS Word 2016中解决我的问题。
如何排除字符串,Word,数字?
示例:
<[A-Z]{2}[A-Z0-9]{9;11}>
搜索 XY123BBT22223
但是如何排除例如像 SEDWS12WW04 这样的特殊效果?
答案 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中的任何高级搜索/替换操作都非常有用,并且我相信您会发现它非常有用。
最诚挚的问候,斯坦尼斯拉夫