Regex:字符串中分隔符(字母和特殊字符)之间的匹配,形成新的子字符串



我正在研究一个特定的问题,我从一个主字符串形成新的子字符串。

例如。in_string=ste5ts01,s02,s03

期望输出字符串为ste5ts01, ste5ts02, ste5ts03

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

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

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

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

任何帮助将非常感激!

您可以使用使用PyPi regex模块和命名捕获组的方法,这些方法在captures中可用:

=(?<prefix>sw+)(?<num>sd+)(?:,(?<num>sd+))+

  • = Match literal
  • (?<prefix>sw+)匹配s和组前缀
  • 中的1+字字符
  • (?<num>sd+)捕获组num匹配s和1+位
  • (?:,(?<num>sd+))+num
  • 中重复匹配, 1+次,捕获s后面跟着1+个数字

例子

import regex as re
pattern = r"=(?<prefix>sw+)(?<num>sd+)(?:,(?<num>sd+))+"
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

最新更新