我目前正在使用以下正则表达式模式删除句子中的符号。
sentence = re.sub("[^a-zA-Z]"," ", sentence)
但是,我想保留所有-
并删除句子中的所有其他符号。
例如,在下面提到的句子中,我想得到如下输出。
Input: tim-tam is a tasty, yummy chocolate.
Output: tim-tam is a tasty yummy chocolate
如何改善目前的正则表达式模式呢?
答案 0 :(得分:4)
[^a-zA-Z]
表示匹配任何不在a-z或A-Z范围内的字符。
可以通过补充集来匹配不在范围内的字符。如果该组的第一个字符是' ^',则将匹配该组中不包含的所有字符。例如,[^ 5]将匹配除' 5'之外的任何字符,[^^]将匹配除' ^'之外的任何字符。如果它不是集合中的第一个字符,则没有特殊含义。
如果您还想排除-
,请加入[^a-zA-Z-]
答案 1 :(得分:0)
[^ A-ZA-Z - ]
除了a-z,A-Z或破折号之外的任何东西。
答案 2 :(得分:0)
如果这是你当前的正则表达式
sentence = re.sub("[^a-zA-Z]"," ", sentence)
并且您要排除-
,请使用
sentence = re.sub("[^a-zA-Z-]"," ", sentence)
[]
开头的插入符号表示“不在此字符类中”。因此,在集合中添加-
会将其从匹配项中排除。