2017-07-19 66 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以外的处理这些问题,但这些都是我将如何根据您最初的问题去了解它。