Python 字符串被多个分隔符分割

标签 python regex split

给定一个字符串:s = FFFFRRFFFFFFFPPRRRRRRLLRLLRLLLPPFPPLPPLPPLFPPFFPFLRPFFRRLLRPFPRFFFFFFFFFLFDRRFRRFFFFFFFFRQEE

分隔字符为 PQDE

我希望能够根据这些字符拆分字符串。

基于:Is it possible to split a string on multiple delimiters in order?

我有以下内容

def splits(s,seps):
    l,_,r = s.partition(seps[0])
    if len(seps) == 1:
        return [l,r]
    return [l] + splits(r,seps[1:])

seps = ['P', 'D', 'Q', 'E']

序列 = split(s, seps)

这给了我:

['FFFFRRFFFFFFF',
 'PRRRRRRLLRLLRLLLPPFPPLPPLPPLFPPFFPFLRPFFRRLLRPFPRFFFFFFFLF',
 'RRFRRFFFFFFFFR',
 '',
 'E']

正如我们所看到的,第二个条目有很多 P

我想要的是最后一组 P 之间出现的字符,而不是第一次出现的字符(即 RFFFFFFFLF)。

此外,分隔字符的出现顺序也不固定。

正在寻找如何实现这一目标的解决方案/提示?

更新:所需的输出,这些分隔符之间的所有字符串集(类似于所示的),但遵循上面最后一次出现的条件

更新2:预期输出

['FFFFRRFFFFFFF',
 'RFFFFFFFLF',   # << this is where the output differs
 'RRFRRFFFFFFFFR',
 '',
 '']   # << the last E is 2 consecutive E with no other letters, hence should be empty

最佳答案

听起来您想按从第一个角色出现到最后一个角色出现的顺序进行分割。

([PDQE])(?:.*\1)?

有一个try with split pattern at regex101和一个PHP Demo at 3v4l.org (Python 中应该类似)。

关于Python 字符串被多个分隔符分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56617594/

相关文章:

java - 替换选项卡 5 和 6 之后的内容(正则表达式)

javascript - 正则表达式强制特定长度,同时不以数字开头

java - 正则表达式条件总是返回其他

r - 拆分和处理嵌套列表

python - 如何重新触发之前的 'while' 循环

python - 为什么训练期间损失曲线会出现大幅跳跃(向上)?

python - 按字符拆分列表中的元素

unix - 如何指定运行 unix split 命令生成的文件的保存位置?

java - 用于串行通信的Python字节数组

python - 有什么方法可以让一个进程拥有写锁而其他进程只能并行读取?