Python 是否可以在集合中使用插入符号和前瞻?
我已经阅读了文档,并查看了其他问题,但我没有找到答案 是否可以在集合中使用先行,或者将先行作为集合中的补码 我想创建一个集合,它匹配除了前面有空格的破折号之外的所有字符。但是,如果只有一个空格后面没有破折号,那么应该是一个匹配的空格 我一直在想这样的方法会奏效,但事实并非如此:Python 是否可以在集合中使用插入符号和前瞻?,python,regex,Python,Regex,我已经阅读了文档,并查看了其他问题,但我没有找到答案 是否可以在集合中使用先行,或者将先行作为集合中的补码 我想创建一个集合,它匹配除了前面有空格的破折号之外的所有字符。但是,如果只有一个空格后面没有破折号,那么应该是一个匹配的空格 我一直在想这样的方法会奏效,但事实并非如此: r'[^\s(?=\-)]' lookaheads在一个集合中不起作用吗?如果没有,我如何着手解决这个问题 编辑以提供示例: 我一直在努力寻找一种更准确的替代方法 r'([^\-]*)\-(.*)' 这是为了读一行和
r'[^\s(?=\-)]'
lookaheads在一个集合中不起作用吗?如果没有,我如何着手解决这个问题
编辑以提供示例:
我一直在努力寻找一种更准确的替代方法
r'([^\-]*)\-(.*)'
这是为了读一行和分开的艺术家从标题
应用re.match(r'([^\-]*)\-(.*),“艺术家-头衔”)
应产生:
group(1) = "artist"
group(2) = "title"
但是,如果艺术家名称包含破折号,则会捕获字符串的错误部分
例如:
re.match(r'([^\-]*)\-(.*)', "jay-z - title")
将产生:
group(1) = "jay"
group(2) = "z - title"
我希望捕获组捕获空格和破折号,但如果破折号前面有空格,则不捕获(如果空格后面有破折号,则不捕获)。有两个问题
r'[^\s(?=\-)]'
相当于r'[^\-)(?\s=])
并表示“匹配除=、?、(、空格和\和之间的所有字符以外的所有字符”r'([^-]|(?<!\s-))'
split
获取要拆分的子字符串,以及从该字符串执行的可选最大拆分次数。split
将源字符串拆分为拆分参数上的子字符串列表,并删除拆分参数
指定最大拆分次数N将返回一个N+1子字符串列表,其中拆分目标的前N个实例将被删除。拆分目标的任何后续实例都将保留在原来的位置
split
默认为从左到右读取字符串,您可以使用rsplit
从右到左读取字符串,它还支持maxslit
可选参数:
>>> 'prince - purple rain - a love-song'.split(' - ', 1)
['prince', 'purple rain - a love-song']
>>> 'prince - purple rain - a love-song'.rsplit(' - ', 1)
['prince - purple rain', 'a love-song']
内置字符串类型有很多功能,您可以在中找到。您可以给出一些示例,说明您拥有什么、匹配什么和不应该匹配什么吗?更新为包含示例和正确答案,我想知道这是谁和为什么被否决的。可能是因为我在计算剩下的。应该在发帖前完成这个想法,而不是太油嘴滑舌。
>>> 'prince - purple rain - a love-song'.split(' - ', 1)
['prince', 'purple rain - a love-song']
>>> 'prince - purple rain - a love-song'.rsplit(' - ', 1)
['prince - purple rain', 'a love-song']