Regex 使用正则表达式清理公司名称

Regex 使用正则表达式清理公司名称,regex,postgresql,replace,pattern-matching,Regex,Postgresql,Replace,Pattern Matching,我有一个数据集(postgresql),其中一个字段包含逗号分隔的公司名称。大多数公司名称由常规字符(字母数字+空格)组成,但也有一些带有后缀,如“inc.”或“ltd.”。为了将公司名称拆分为单独的字符串,我需要首先删除用来表示公司名称后缀的逗号(这是一个外部要求)。那么比如说在 焚烧至地面,Groupwise有限公司,人民公司,SepiaShot 我的正则表达式应该能够删除第2个和第4个逗号,但不能删除其他逗号。我想知道这是否可以用正则表达式来完成。我已经尝试了几种使用平衡组和环顾四周的解决

我有一个数据集(postgresql),其中一个字段包含逗号分隔的公司名称。大多数公司名称由常规字符(字母数字+空格)组成,但也有一些带有后缀,如“inc.”或“ltd.”。为了将公司名称拆分为单独的字符串,我需要首先删除用来表示公司名称后缀的逗号(这是一个外部要求)。那么比如说在

焚烧至地面,Groupwise有限公司,人民公司,SepiaShot


我的正则表达式应该能够删除第2个和第4个逗号,但不能删除其他逗号。我想知道这是否可以用正则表达式来完成。我已经尝试了几种使用平衡组和环顾四周的解决方案,但我无法使其工作。

您可以使用以下正则表达式:

\,(?=\s(?:Ltd|Inc))
如果你有更多像corp.reg这样的单词,我想你只想删除这些单词前面的逗号。等等,您可以像这样使用
|
将它们添加到正则表达式中

\,(?=\s(?:Ltd|Inc|Corp|Reg))
根据您的要求修改此正则表达式

以下是演示,供快速参考:


检查替换结果

您可以使用此正则表达式:

\,(?=\s(?:Ltd|Inc))
如果你有更多像corp.reg这样的单词,我想你只想删除这些单词前面的逗号。等等,您可以像这样使用
|
将它们添加到正则表达式中

\,(?=\s(?:Ltd|Inc|Corp|Reg))
根据您的要求修改此正则表达式

以下是演示,供快速参考:


检查替换结果

Aelor很接近,但使用了肯定而不是否定的断言,并且没有处理空格。(实际上,根据评论,Aelor回答了提出的具体问题;我展示了如何通过在拆分时忽略逗号来避免完全删除逗号)

还从中添加了公司名称后缀的综合列表

在PostgreSQL 9.3上测试


考虑非美国公司后缀,例如德语“GMBH”。我强烈建议您将替换的结果视为可疑,并让一个人来验证它们是否正确。

Aelor很接近,但使用了肯定而不是否定的断言,并且没有处理空格。(实际上,根据评论,Aelor回答了提出的具体问题;我展示了如何通过在拆分时忽略逗号来避免完全删除逗号)

还从中添加了公司名称后缀的综合列表

在PostgreSQL 9.3上测试


考虑非美国公司后缀,例如德语“GMBH”。我强烈建议您将替换的结果视为可疑,并让一个人来验证它们是否正确。

只有在您有一组可以作为允许后缀的特定单词时才可能。这里有除此之外的Ltd.和Inc.单词?这是另一个和相关的示例,即“不要在数据库中存储逗号分隔的文本”。请注意:我也没有。这是以前从旧版本的网站上抓取的一些数据。首先,从现在开始,我将尽量避免RDBM中的数组。只有当您有一组可以作为允许后缀的特定单词时,才可能。这里有除此之外的Ltd.和Inc.单词?这是另一个和相关的示例,即“不要在数据库中存储逗号分隔的文本”。请注意:我也没有。这是以前从旧版本的网站上抓取的一些数据。首先,从现在起,我将尽量避免RDBM中的数组。我不确定Pg的正则表达式处理器是否支持断言。它支持!更多信息:太好了!我稍微修改了正则表达式并使用了以下内容:
updatecompanys set names=regexp\u replace(name,,(?=\s?(?:AB | AG | SA | SARL | GMBH | BVBA | Ltée | LLP | II | Ltd | Inc Corp)\M,,,“ig”)
我不确定Pg的正则表达式处理器是否支持断言。它支持!更多信息:太好了!我稍微修改了正则表达式并使用了以下内容:
updatecompanys set names=regexp\u replace(name,,(?=\s?(?:AB | AG | SA | SARL | GMBH | BVBA | Ltée | LLP | II | Ltd | Inc Corp | M,,| ig)
你做了相反的lol。op想要删除
第2个和第4个逗号,而不是其他的(
你已经删除了第2个和第4个以外的其他逗号:)不,我刚刚解决了整个问题,通过拆分字符串而不剥离逗号。它们不需要删除逗号,只需忽略它们即可实现字符串拆分模式表达式。干得好!我现在不能用这个,因为我真的必须删除那些逗号(不是我的选择)。但希望在以后的版本中我能保留它们。我保存参考资料!顺便说一句,你已经编译了一个令人印象深刻的后缀列表。你做了相反的lol。op想要删除
第2个和第4个逗号,而不是其他的(
你已经删除了除第2个和第4个之外的其余部分:)不,我刚刚解决了整个问题,通过拆分字符串而不剥离逗号。它们不需要删除逗号,只需忽略它们即可实现字符串拆分模式表达式。干得好!我现在不能用这个,因为我真的必须删除那些逗号(不是我的选择)。但希望在以后的版本中我能保留它们。我保存参考资料!顺便说一句,这是一个令人印象深刻的后缀列表,你已经编译。