我正在查看excel中的一长串数据。在这个长列表中,有一个列,它包含数字字符(数字)和阿尔法字符,以及非α-数字字符。-所以是文字栏。我正试图在本专栏的单元格中间找到1-2个单词。这些单词出现的时间总是在一个四位数和一个空格之后。(注:4位数字不出现在我不感兴趣的单词前面)。
我有一个工具,允许我将正则表达式列表保存在excel中,并编写了一个规则列表,这些规则将在每个单词在3-11个字符之间找到4位数字和两个单词,然后将匹配提取到一个新的列示例:-
\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个基于alpha的单词中有一个。这些是:-
INTE
MANU
PMNT
Payment我想要做的是,在上面的正则表达式中包括一个部分,它排除了找到上述示例的任何第二个单词。
有没有办法在我现有的规则列表中添加一些排除这些规则的内容,或者更好的方法,以一种完全不同、更优雅的方式来做我想做的事情,因为在非常少的情况下,实际上有3个单词我想找到--为了补偿我需要把我的列表提高到1331个组合?
在这方面的任何帮助都是很棒的,因为我们每周都会得到这些精确的数据列表,而手动完成这一操作显然是不可能的。
发布于 2015-05-29 11:58:10
您可以使用与所有121种模式和排除要求等效的以下正则表达式:
\b\d{4}\b\s*\b[A-Z]{3,11}\s*\b(?!(INTE|MANU|PMNT|Payment)\b)[A-Z]{3,11}\s*
^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^请参阅演示
https://stackoverflow.com/questions/30528534
复制相似问题