替换除某个正则表达式以外的所有正则表达式匹配项

2024-03-29 09:18:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何替换除某个选定字符以外的所有正则表达式匹配项。你知道吗

我需要清理数据。数据的一个例子是

`some-really,dirty.data%#$_.`

我想要的样子

some-reallydirtydata_

注意somereally之间的-。这是我选择的角色,我不想移除。你知道吗

以下是我的代码片段:

import re

unclean_string = "some-really,dirty.data%#$_."
clean_string = re.sub('\W', '', unclean_string)

print clean_string
>>>"somereallydirtydata_"

我知道\W会删除除“0到9、a到z、a到z和下划线”之外的所有内容。你知道吗

我想知道如何删除所有这些,以及所选的字符(例如-)。你知道吗

免责声明:我为提出这样一个基本问题提前道歉。我对Python和regex都是新手。你知道吗


Tags: 数据代码importreclean角色stringsome
2条回答

您可以使用:

clean_string = re.sub(r'[^\w-]', '', unclean_string)

[^\w]等价于\W。因此,如果您在其中添加-,您也不会匹配它。你知道吗

注意:我还绘制了上面的regex字符串,因为这样做是一种很好的做法。这可以防止意外的行为,尤其是在逃跑的时候。你知道吗

在正则表达式中包含连字符:

clean_string = re.sub('[^-\w]', '', unclean_string)

正则表达式的解释:

NODE                     EXPLANATION
                                        
  [^-\w]                   any character except: '-', word characters
                           (a-z, A-Z, 0-9, _)

相关问题 更多 >