寻找 1-3 个单词,前面是 4 位数字,后跟非字母字符或 1-4 个特定单词

looking for 1-3 words preceded by 4 digit number followed by non alpha characters or 1-4 specific words

我正在查看 excel 中的一长串数据。在这个长列表中,有一列混合了数字字符(数字)和字母字符,以及非字母数字字符。 – 所以一个文本栏。 我试图在此列的单元格中间找到 1-2 个单词。这些词出现的次数总是在一个四位数字和一个space之后。 (N.B 4 位数字不出现在我不感兴趣的单词之前)。

我有一个工具可以让我在 excel 中保存正则表达式列表,并编写了一个规则列表,可以找到 4 位数字和它后面的两个单词,前提是它们在 3-11 个字符之间每个单词,然后将匹配项提取到新列 示例:-

\b\d{4}\b\s*\b[A-Z]{11}\s*\b[A-Z]{11}\s*

\b\d{4}\b\s*\b[A-Z]{10}\s*\b[A-Z]{11}\s*

\b\d{4}\b\s*\b[A-Z]{9}\s*\b[A-Z]{11}\s*

\b\d{4}\b\s*\b[A-Z]{8}\s*\b[A-Z]{11}\s*

and

\b\d{4}\b\s*\b[A-Z]{11}\s*\b[A-Z]{10}\s*

\b\d{4}\b\s*\b[A-Z]{11}\s*\b[A-Z]{9}\s*

\b\d{4}\b\s*\b[A-Z]{11}\s*\b[A-Z]{8}\s*

b\d{4}\b\s*\b[A-Z]{11}\s*\b[A-Z]{7}\s*

这已经创建了一个包含 121 种不同组合的列表并且效果很好。
我确信有比我选择的更简单的方式来编写这些,但这很好。使用复制和粘贴,我花了大约 10 分钟才弄清楚如何编写规则,并花了 10 秒 运行 很多。 –

唯一的问题是 - 在我只想找到一个单词的情况下,有时会在我不想包含的第一个单词之后出现 4 个其他基于字母的单词中的 1 个。 它们是:-

INTE
MANU
PMNT
Payment

我想要做的是在我的上述正则表达式中包含一个部分,该部分排除了上述示例所在的任何第二个词。

有没有一种方法可以在我现有的规则列表中添加一些排除这些规则的东西,或者更好的是可以以完全不同和更优雅的方式做我想做的事情,因为在极少数情况下实际上只有 3 个词我想找到 - 哪个来补偿我需要将我的列表增加到 1331 种组合?

这方面的任何帮助都会很棒,因为我们每周都会获得这些准确的数据列表,而手动执行此操作显然是不可能的。

您可以使用以下等同于所有 121 模式和排除要求的正则表达式:

\b\d{4}\b\s*\b[A-Z]{3,11}\s*\b(?!(INTE|MANU|PMNT|Payment)\b)[A-Z]{3,11}\s*
                     ^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^       ^^^^

DEMO