Python Regex忽略特定字符

Python Regex忽略特定字符,python,regex,parsing,Python,Regex,Parsing,我正在解析非字母数字字符的文本,并希望排除撇号、破折号/连字符和逗号等特定字符 我想为以下情况构建一个正则表达式: 非字母数字字符,撇号和加高除外 非字母数字字符,不包括逗号、撇号和加粗符号 这就是我尝试过的: def split_text(text): my_text = re.split('\W',text) # the following doesn't work. #my_text = re.split('([A-Z]\w*)',text) #my_te

我正在解析非字母数字字符的文本,并希望排除撇号、破折号/连字符和逗号等特定字符

我想为以下情况构建一个正则表达式:

  • 非字母数字字符,撇号和加高除外
  • 非字母数字字符,不包括逗号、撇号和加粗符号
  • 这就是我尝试过的:

    def split_text(text):
        my_text = re.split('\W',text)
    
        # the following doesn't work.
        #my_text = re.split('([A-Z]\w*)',text)
        #my_text = re.split("^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$",text)
    
        return my_text
    
    • 案例1
      • 示例输入:怎么了?很高兴见到你,我的朋友。向世界问好
      • 示例输出:['What's','up','It's','good','to','see','you','my friend','Hello','to-the','world']
    • 案例2
      • 示例输入:这意味着,做这样的事情是不好的
      • 示例输出:['It','means','that','It's','not','good to','do','such','things']
    任何想法都可以使用否定来表示:

    my_text = re.split(r"[^\w'-]+",text)
    

    这是你想要的吗

    非字母数字字符,撇号和加高除外

    非字母数字字符,不包括逗号、撇号和加粗符号

    []
    语法定义了一个字符类,
    [^..]
    对其进行“补充”,即对其进行否定

    请参见以下内容:

    不在某个范围内的字符可以通过补足集合进行匹配。如果集合的第一个字符是
    “^”
    ,则集合中不存在的所有字符都将匹配。例如,
    [^5]
    将匹配除
    '5'
    以外的任何字符,
    [^^]
    将匹配除
    '^'
    以外的任何字符<代码>^如果不是集合中的第一个字符,则没有特殊意义


    您的代码中有一些错误(与问题无关),例如,第一行末尾缺少冒号,函数本身有缩进。感谢您指出,已修复。非常感谢您的回答和解释。非常感谢您的回答。由于zmo解释,我接受他的回答可以吗?@user3247054:当然,你不必问:)(事实上,甚至不必说“谢谢”,投票是你能给予的最好的感谢。)
    my_text = re.split(r"[^\w,'-]+",text)   # also excludes commas
    
    my_text = re.split(r"[^\w'-]+",text)
    
    my_text = re.split(r"[^\w-',]+",text)