我想知道如何替换所有正则表达式匹配,除了某个选定的字符。
我需要清理数据。数据的一个例子是
`some-really,dirty.data%#$_.`
我希望看起来像
some-reallydirtydata_
请注意-
和some
之间的really
。这是我选择的角色,我不喜欢删除。
以下是我的代码片段:
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新手并使用正则表达式。
答案 0 :(得分:2)
您可以使用:
clean_string = re.sub(r'[^\w-]', '', unclean_string)
[^\w]
相当于\W
。因此,如果您在其中添加-
,则也不会与之匹配。
注意:我还在上面编写了正则表达式字符串,因为它是一个很好的做法。这可以防止您在转义期间可能出现的意外行为。
答案 1 :(得分:0)
在正则表达式中包含连字符:
clean_string = re.sub('[^-\w]', '', unclean_string)
正则表达式的解释:
NODE EXPLANATION
--------------------------------------------------------------------------------
[^-\w] any character except: '-', word characters
(a-z, A-Z, 0-9, _)