正则表达式:匹配字符串中的分隔符(字母和特殊字符)以形成新的子字符串
Regex: Match between delimiters (a letter and a special character) in a string to form new sub-strings
我正在处理某个问题,我从主字符串中形成了新的子字符串。
例如
in_string=ste5ts01,s02,s03
预期的输出字符串为 ste5ts01
、ste5ts02
、ste5ts03
可以使用逗号 (,) 或正斜杠 (/) 作为分隔符,在这种情况下,分隔符是字母 s
和 ,
到目前为止我创建的模式:
pattern = r"([^\s,/]+)(?<num>\d+)([,/])(?<num>\d+)(?:(?<num>\d+))*(?!\S)"
问题是,我不知道如何将字母 's' 作为分隔符之一。
任何帮助将不胜感激!
您可以使用 PyPi regex module 和 captures
中可用的命名捕获组的方法:
=(?<prefix>s\w+)(?<num>s\d+)(?:,(?<num>s\d+))+
说明
=
字面匹配
(?<prefix>s\w+)
匹配 s
和 prefix 组中的 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
我正在处理某个问题,我从主字符串中形成了新的子字符串。
例如
in_string=ste5ts01,s02,s03
预期的输出字符串为 ste5ts01
、ste5ts02
、ste5ts03
可以使用逗号 (,) 或正斜杠 (/) 作为分隔符,在这种情况下,分隔符是字母 s
和 ,
到目前为止我创建的模式:
pattern = r"([^\s,/]+)(?<num>\d+)([,/])(?<num>\d+)(?:(?<num>\d+))*(?!\S)"
问题是,我不知道如何将字母 's' 作为分隔符之一。
任何帮助将不胜感激!
您可以使用 PyPi regex module 和 captures
中可用的命名捕获组的方法:
=(?<prefix>s\w+)(?<num>s\d+)(?:,(?<num>s\d+))+
说明
=
字面匹配(?<prefix>s\w+)
匹配s
和 prefix 组中的 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