首页 > 解决方案 > 正则表达式

问题描述

这是部分数据

Broan 抽油烟机 (BP130WWN) - 白色
Broan 抽油烟机 (BP130BLN) - 黑色
Broan 抽油烟机 (GP124WWN) - 白色
Broan 抽油烟机 (GP130WWN) - 白色
Broan 抽油烟机 (QS130WWN) - 白色
Broan 抽油烟机 (QS130BLN) - 黑色
Broan 抽油烟机 (QS130SSN) - 不锈钢
Broan 抽油烟机 (QS230WWN) - 白色
Broan 抽油烟机 (QS230BLN) - 黑色
Broan 抽油烟机 (QS230SSN) - 不锈钢
Broan 抽油烟机 (QS330WWN) - 白色
Broan 抽油烟机 (QS330BLN) - 黑色
Broan 抽油烟机 (QS330SSN) - 不锈钢
Broan 抽油烟机 (E66130SSL) - 不锈钢
Broan 抽油烟机 (RM503004) - 不锈钢
Broan 抽油烟机 (273003) - 不锈钢

我想删除(RM503004)(273003)里面可能包含 3 到 11 个字母数字代码()

使用 Python 我可以像下面这样使用它:

text = re.sub('[a-zA-Z0-9]{3,11}', ' ', dataset['Title'][i])

但它的输出并不如预期,这将是:

Broan 抽油烟机 - 白色
Broan 抽油烟机 - 黑色
Broan 抽油烟机 - 白色
Broan 抽油烟机 - 白色
Broan 抽油烟机 - 白色
Broan 抽油烟机 - 黑色
Broan 抽油烟机 - 不锈钢
Broan 抽油烟机 - 白色
Broan 抽油烟机 - 黑色
Broan 抽油烟机 - 不锈钢
Broan 抽油烟机 - 白色
Broan 抽油烟机 - 黑色
Broan 抽油烟机 - 不锈钢
Broan 抽油烟机 - 不锈钢
Broan 抽油烟机 - 不锈钢
Broan 抽油烟机 - 不锈钢

标签: regexpython-3.x

解决方案


如此接近,只需添加转义的括号:

\([a-zA-Z0-9]{3,11}\)\s*

测试

import re

string = '''
Broan Range Hood (BP130WWN) - White
Broan Range Hood (BP130BLN) - Black
Broan Range Hood (GP124WWN) - White
Broan Range Hood (GP130WWN) - White
Broan Range Hood (QS130WWN) - White
Broan Range Hood (QS130BLN) - Black
Broan Range Hood (QS130SSN) - Stainless
Broan Range Hood (QS230WWN) - White
Broan Range Hood (QS230BLN) - Black
Broan Range Hood (QS230SSN) - Stainless
Broan Range Hood (QS330WWN) - White
Broan Range Hood (QS330BLN) - Black
Broan Range Hood (QS330SSN) - Stainless
Broan Range Hood (E66130SSL) - Stainless
Broan Range Hood (RM503004) - Stainless
Broan Range Hood (273003) - Stainless

'''

expression = r'\([a-zA-Z0-9]{3,11}\)\s*'

print(re.sub(expression, '', string))

输出


Broan Range Hood - White
Broan Range Hood - Black
Broan Range Hood - White
Broan Range Hood - White
Broan Range Hood - White
Broan Range Hood - Black
Broan Range Hood - Stainless
Broan Range Hood - White
Broan Range Hood - Black
Broan Range Hood - Stainless
Broan Range Hood - White
Broan Range Hood - Black
Broan Range Hood - Stainless
Broan Range Hood - Stainless
Broan Range Hood - Stainless
Broan Range Hood - Stainless

如果您希望简化/更新/探索表达式,它已在regex101.com的右上角面板中进行了说明。如果您有兴趣,可以在此调试器链接中观看匹配步骤或修改它们。调试器演示了 RegEx 引擎如何逐步使用一些示例输入字符串并执行匹配过程。



推荐阅读