我想用所有空格和标点符号分割字符串,撇号除外。最好是单引号仍然用作分隔符,除非它是撇号。我还想保留delimeters。
示例字符串
words = """hello my name is 'joe.' what's your's"""
这是我到目前为止的重新模式splitted = re.split(r"[^'-\w]",words.lower())
我尝试在“^字符后添加一个引号,但它不起作用
我想要的输出是这个splitted = [hello,my,name,is,joe,.,what's,your's]
Tags:
拆分后只处理列表可能更简单,而不首先考虑它们:
一种选择是使用lookarounds在所需位置进行拆分,并使用要保留在拆分中的捕获组
拆分后,可以从结果列表中删除空条目
模式匹配
\s+
匹配一个或多个空白字符|
或(?<=\s)'
匹配'
前面有空格字符|
或'(?=\s)
匹配'
后接空格字符|
或(?<=\w)([,.!?])
捕获组1中的{见aregex demo和aPython demo
范例
输出
我喜欢regex高尔夫
括号中的部分是一个组,它匹配由字母包围的撇号或单个字母
编辑:
这是更灵活的:
不过,在这一点上,它变得有点难以理解,实际上,你可能应该使用伍德福德的答案
相关问题 更多 >
编程相关推荐