正则表达式:匹配字符串中的分隔符(字母和特殊字符)以形成新的子字符串

Regex: Match between delimiters (a letter and a special character) in a string to form new sub-strings

我正在处理某个问题,我从主字符串中形成了新的子字符串。

例如 in_string=ste5ts01,s02,s03

预期的输出字符串为 ste5ts01ste5ts02ste5ts03

可以使用逗号 (,) 或正斜杠 (/) 作为分隔符,在这种情况下,分隔符是字母 s,

到目前为止我创建的模式:

pattern = r"([^\s,/]+)(?<num>\d+)([,/])(?<num>\d+)(?:(?<num>\d+))*(?!\S)"

问题是,我不知道如何将字母 's' 作为分隔符之一。

任何帮助将不胜感激!

您可以使用 PyPi regex modulecaptures 中可用的命名捕获组的方法:

=(?<prefix>s\w+)(?<num>s\d+)(?:,(?<num>s\d+))+

说明

  • =字面匹配
  • (?<prefix>s\w+) 匹配 sprefix
  • 组中的 1+ 个单词字符
  • (?<num>s\d+) 捕获组 num 匹配 s 和 1+ 位
  • (?:,(?<num>s\d+))+ 重复 1+ 次匹配 , 并捕获 s 后跟组 num
  • 中的 1+ 个数字

例子

import regex as re

pattern = r"=(?<prefix>s\w+)(?<num>s\d+)(?:,(?<num>s\d+))+"
s="in_string=ste5ts01,s02,s03"

matches = re.finditer(pattern, s)
for _, m in enumerate(matches, start=1):
    print(','.join([m.group("prefix") + c for c in m.captures("num")]))

输出

ste5ts01,ste5ts02,ste5ts03