我正在解析非字母数字字符的文本,并希望排除撇号,短划线/连字符和逗号等特定字符。
我想为以下情况构建一个正则表达式:
这就是我的尝试:
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
任何想法
答案 0 :(得分:3)
您可以使用否定的character class:
my_text = re.split(r"[^\w'-]+",text)
或
my_text = re.split(r"[^\w,'-]+",text) # also excludes commas
答案 1 :(得分:3)
这就是你想要的吗?
非字母数字字符,不包括撇号和超量
my_text = re.split(r"[^\w'-]+",text)
非字母数字字符,不包括逗号,撇号和超量
my_text = re.split(r"[^\w-',]+",text)
[]
语法定义了一个字符类,[^..]
“补充”它,即它否定了它。
请参阅documentation:
可以通过补充集来匹配不在范围内的字符。如果该集的第一个字符是
'^'
,则将匹配该集合中不包含的所有字符。例如,[^5]
将匹配除'5'
之外的任何字符,并且[^^]
将匹配任何字符除了'^'
。^
如果不是该集合中的第一个字符,则没有特殊含义。