我正在尝试替换字符串中的斜杠,但不是所有字符串 - 只有第一个逗号之前的斜杠。要做到这一点,我可能必须找到一种方法来匹配斜杠后面跟着包含逗号的字符串。
是否可以使用一个正则表达式执行此操作,即不先用逗号分隔字符串?
示例输入字符串:
Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4
我想得到什么:
Abc1.Def2.Ghi3,/Dore1/Mifa2/Solla3,Sido4
我已经尝试了一些前瞻性和后视技术而没有效果,所以目前在例如Python我首先分割数据:
test = 'Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4'
strlist = re.split(r',', test)
result = ','.join([re.sub(r'\/', r'.', strlist[0])] + strlist[1:])
我更喜欢的是使用特定的正则表达式模式而不是面向Python的解决方案,所以基本上我可以有一个pattern
和replacement
,以便下面的代码会给我相同的结果:
result = re.sub(pattern, replacement, test)
感谢所有正则表达式 - 避免回答 - 我想知道我是否可以使用仅正则表达式执行此操作(例如,我可以使用sed
代替Python)。
答案 0 :(得分:3)
item = 'Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4'
print item.replace("/", ".", item.count("/", 0, item.index(",")))
这将打印您需要的内容。尽量避免使用正则表达式,因为它们很慢。
答案 1 :(得分:1)
你可以使用lookbehind表达式来查找字符串的开头而不是逗号。或者不要完全使用re
。
s = 'Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4'
left,sep,right = s.partition(',')
sep.join((left.replace('/','.'),right))
Out[24]: 'Abc1.Def2.Ghi3,/Dore1/Mifa2/Solla3,Sido4'