用于删除公司后缀并保留原始或积极前瞻的正则表达式?

RegEx for removing company suffix and keep original, or positive lookahead?

我目前正在尝试对公司名称进行一些自然语言处理。

我写的正则表达式是 -\s+\w+('\w+|\s+\w) 这是为了删除连字符后的所有文本(如果有空格)。 接下来,我再 [.,/#!$%\^&*;:{}=-_`''"<>|~()] 删除所有标点符号。三、我(Reg|Ltd|PLC|NV|LTD|LLC|INC|LLP|US)去掉公司后缀。最后,有一些名字前后有回车符returns,我用"\r*\n*.

来解决

我想将所有这些正则表达式片段放在一起,因为我在 Alteryx 和 Python 中 运行 这个。

请注意:有些带有连字符的公司名称后面没有空格,我需要保留它并确保它们不会随着标点符号的删除而被删除。

如何组合所有这些片段?而且,我这样做正确吗?最后,在字符串清理后,我会将此数据加入另一个客户端列表以提取特定信息。

This is why all front-ends should NEVER contain a free text field especially for companies.

我该如何将它们组合成一个模式,还是将每个模式分开更好?

之前 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

请注意,COLLEGE-INRIA 保留了下来,因为连字符和下一个字符之间没有空格。

我猜你已经过了对回应的迫切需求,但想为后代回答。

首先,这确实是一个风格问题,即您是将每个正则表达式步骤分开还是尝试将它们组合成一个令人印象深刻的长而无法理解的表达式。 (你未来的自己 and/or 其他人可能会感谢你将它们分开。)在某些情况下,减少正则表达式操作有一些性能方面的考虑,但总的来说,我会说能够回来更好并了解从现在起一年或更长时间后您尝试做的事情,而不是节省几个周期。

其次,正则表达式当然有它的用途,但我 always ask myself if there is any way to avoid using Regex before I actually use it. Now you have two problems...

最后,考虑到这一点,您可以在不使用 Regex 的情况下在 Alteryx 中解决大部分解析步骤,并且性能相似。

  1. 删除后跟 space 的连字符可以使用模式“-”(space + 连字符)的文本到列工具来完成,然后仅适用于第一列这是其余工作流程的结果(或使用 Select 工具完全删除垃圾列)。
  2. 您可以使用数据清理工具删除所有白色space(包括 \r、\n 等)以及所有特殊字符,并在“删除不需要的字符”部分选中相应的复选框。在删除原始字符串中不需要的部分后,您可以通过执行此操作来加快速度。但是,这将删除未封装在白色 space 中的想要的连字符,所以...
  3. 您可以使用已有的模式设置一个简单的公式工具表达式,以便使用 REGEX_Replace() 函数匹配所有要替换的特殊字符。您也可以使用查找和替换工具,或一组嵌套的 Replace() 函数,但是,在这种情况下,REGEX_Replace() 函数可能是最简洁和最容易理解的,假设任何人都会有维护工作流就能处理Regex。

如果您尝试在 Python SDK 的上下文中执行这些操作,那么我仍然建议您将多个步骤分开,以便将来 and/or 其他人使用。

像大多数事情一样,在 Alteryx 和 Alteryx 之外还有其他方法可以解决这些问题,但根据您最初的问题,我将采用这些方法。