识别除某些符号之外的正则表达式

时间:2017-12-19 02:21:32

标签: python regex

我目前正在使用以下正则表达式模式删除句子中的符号。

sentence = re.sub("[^a-zA-Z]"," ", sentence)

但是,我想保留所有-并删除句子中的所有其他符号。

例如,在下面提到的句子中,我想得到如下输出。

Input: tim-tam is a tasty, yummy chocolate.
Output: tim-tam is a tasty yummy chocolate

如何改善目前的正则表达式模式呢?

3 个答案:

答案 0 :(得分:4)

请参阅regular expression syntax

[^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)

[]开头的插入符号表示“不在此字符类中”。因此,在集合中添加-会将其从匹配项中排除。