2015-05-29 48 views
0

我正在瀏覽excel中的一長串數據。在這個長列表中,有一列包含數字字符(數字)和字母字符以及非字母數字字符的混合。 - 這是一個文本列。 我正在嘗試在此列中的單元格中間找到1-2個單詞。這些詞出現的時間總是在四位數字和空格之後。 (N.B 4位數字不出現在我不感興趣的單詞之前)。尋找1-3個單詞,前面跟着4位數字,後面跟着非alpha字符或1-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秒鐘來運行這個程序。 -

唯一的問題是 - 在只有一個單詞我想查找的情況下,有時候會有第一個單詞出現在我不想包含的第一個單詞後面。 它們是: -

INTE 
MANU 
PMNT 
Payment 

我想要做的是包括我排除在上面的例子中發現任何的第二字,上面正則表達式的部分。

有沒有辦法在我現有的排除這些規則的規則列表中添加某些內容,或者更好的辦法是以完全不同的和更優雅的方式來做我想要的內容,因爲在極少數情況下實際上有3個字我想要找到 - 爲了彌補我需要將我的清單上升到1331個組合?

在這方面的任何幫助將是美好的,因爲我們每週都會得到這些確切的數據列表,並且手動執行此操作顯然是不可能的。

回答

0

您可以使用以下正則表達式相當於你的所有121分的模式和您的排除要求:

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

DEMO

+0

謝謝KARTHIK這是一個良好的開端。但是,如果有條目包含我想排除的詞作爲第二個詞,則根本找不到任何匹配詞。我希望它能提取第一個字,而忽略第二個字。這可能嗎? –

+0

不要緊,如果我正確地構造規則,我可以忽略它們。 再次感謝! –

+0

高興地幫助:)更新了你的問題的答案..檢查演示:) –

相關問題