我正在研究一个特定的问题,我从一个主字符串形成新的子字符串。
例如。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