在 Regex 或 Python 中:计数、添加和写入(重复次数 + 字符名称)并继续......并在新的事件中重复该过程

In Regex or Python: Count, add and write (Number of times it repeats + character name) and proceed ... and in a new occurrence repeat the process

给定以下列表或元组:

列表:[UURRUULLLRRDDDBBBUUU]

第一步:计算"U"字符在新的"unknown2 (R or D or B or L?)"字符出现之前重复了多少次并记录(重复次数+相应"U"字符的字母)

Step2:接第1步:计算"unknown2"字符重复了多少次,直到出现"unknown2"以外的新字符。或等于 "U" 字符和记录(重复次数 + 相应 "unknown2" 字符的字母)。

中间步骤:如果 "unknown2" 字符后的新字符等于 "U" 字符,请计算它在新出现的字符中重复了多少次并重复步骤 1。

也就是说,对于元组(列表),我想要的方式组织重复的结果是:

2U2R2U3L2R3D3B3U

类似的东西是 This(但不是在正则表达式中),除了结果不一样,但这对我来说是一个开始。

您可以使用

re.sub(r"(.)*", lambda x: "{}{}".format(len(x.group()), x.group(1)), text)

online demo

详情

  • (.)* 是一种模式,它匹配并捕获一个字符(换行符字符除外,使用 re.DOTALL 也可以匹配换行符),然后匹配 0+ 个与组 1 中相同的字符.
  • lambda x: "{}{}".format(len(x.group()), x.group(1)) 是替换,其中 x 是找到的匹配对象,return 值是整个匹配长度的串联 (len(x.group()))和第 1 组中的字符 (x.group(1)).