2017-07-19 65 views
0

我目前正在嘗試爲公司名稱進行一些自然語言處理。正則表達式用於刪除公司後綴並保留原始或正面向前?

我寫的正則表達式是-\s+\w+('\w+|\s+\w)這是刪除連字符後的所有文本,如果它的空格。 接下來,我然後[.,/#!$%\^&*;:{}=-_`''"<>|~()]刪除所有標點符號。三,我公司刪除後綴(Reg|Ltd|PLC|NV|LTD|LLC|INC|LLP|US)。最後,在前面和後面有一些帶回車符的名字,我用"\r*\n*解決。

我想把所有這些正則表達式拼在一起,因爲我在Alteryx & Python中運行這個。

請注意:有連字符後面沒有空格的公司名稱,我需要保留這一點,並確保在刪除標點符號時不會刪除它們。

我該如何結合所有這些作品?而且,我是否正確地處理這個問題?最後,在清理字符串之後,我會將這些數據加入到另一個客戶列表中以撤回特定信息。

這就是爲什麼所有的前端都不應該包含特別是公司的免費文本字段的原因。

我該如何將這些結合到一個模式中,還是將每個模式分開是更好的做法?

以前 MY COMPANY X,Y,Z, TENNESSEE CORPORATION L.L.C. MY COMPANY HOLDINGS, LP. (there is a carriage return after the LP.) ABN FGDF - NEW YORK - UNITED STATES COLLEGE-INRIA ABCDE - UNITED STATES MANAGEMENT MANAGERS - UNITED STATES INVESTMENT MANAGEMENT CORPORATION - CANADA AUTO-CHLOR

MY COMPANY XYZ TENNESSEE CORPORATION MY COMPANY HOLDINGS ABN FGDF COLLEGE-INRIA ABCDE MANAGEMENT MANAGERS INVESTMENT MANAGEMENT CORPORATION AUTO-CHLOR

注意,本科INRIA留校有連字符和下一個字符之間沒有空格。

+0

剛剛更新,之前和之後的例子增加,並清理了一些文字。 – Carson

+0

我看到你檢查'LLC',它只在你的例子中起作用,當你在之前的檢查中已經取出''''。有沒有其他人這樣? (例如是'有史以來LLP'寫爲'L.L.P.'任何其他人?) – 3D1T0R

+0

只是好奇 - 如果在該行一回車,可以在不通過刪除空行被解釋爲空行和消除。 (我正在思考一個Alteryx對這個問題的回答。) – johnjps111

回答

0

我猜你已經過去了,迫切需要回應,但是想爲後代回答。

首先,這是一個真正的風格問題,您是否將每個正則表達式步驟分開或嘗試將它們合併爲一個單獨的,令人印象深刻的,不可能理解的表達式。 (你未來的自我和/或其他人可能會感謝你讓他們分開)。在某些情況下,有一些性能方面的考慮因素是減少正則表達式的操作,但總的來說,我認爲最好能夠回來製作感覺你從現在開始想要做一年或者更多的時間來節省幾個週期。

二,正則表達式肯定有它的用處,但是我實際上在使用它之前我用了always ask myself if there is any way to avoid using RegexNow you have two problems...

最後,考慮到這一點,您可以在Alteryx中解決大部分這些解析步驟,而無需使用正則表達式並具有類似的性能。 「 - 」

  1. 移除連字符後面的空間的可以使用的圖案的文本到列工具來完成(空間+連字符),然後只與從導致對於其餘的第一列的工作的工作流程(或使用Select工具完全刪除垃圾列)。
  2. 您可以移除所有的空格(包括\ r,\ n等)以及與相應的複選框中刪除不想要的字符段查了數據清理工具的所有特殊字符。刪除原始字符串中不需要的部分後,可以通過這樣做來提高速度。但是,這將刪除空白未封裝的希望連字符,所以...
  3. 您可以設置與模式一個簡單的公式工具表達你已經有了全部一致的特殊字符要使用REGEX_Replace更換( )功能。你也可以使用查找和替換工具,或更換()一堆嵌套函數,但是,在這種情況下,REGEX_Replace()函數可能是最簡潔和易於理解的,假設任何人都必須保持工作流程將能夠處理正則表達式。

如果您嘗試在Python SDK的環境中執行這些操作,那麼我仍然建議您將多個步驟分開以備將來您和/或其他人使用。

最喜歡的事情,還有其他的方式在Alteryx和Alteryx以外的處理這些問題,但這些都是我將如何根據您最初的問題去了解它。