Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何仅在后跟包含特定字符的字符串时匹配特定字符_Regex_String - Fatal编程技术网

Regex 如何仅在后跟包含特定字符的字符串时匹配特定字符

Regex 如何仅在后跟包含特定字符的字符串时匹配特定字符,regex,string,Regex,String,我试图替换字符串中的斜杠,但不是全部,只替换第一个逗号之前的斜杠。要做到这一点,我可能必须找到一种方法,只匹配后面跟有包含逗号的字符串的斜杠 是否可以使用oneregexp执行此操作,即不首先用逗号拆分字符串 输入字符串示例: Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4 我想要的是: Abc1.Def2.Ghi3,/Dore1/Mifa2/Solla3,Sido4 我已经尝试了一些前瞻和落后技术,但没有效果,因此,为了在Python中实现这一点,我首先拆

我试图替换字符串中的斜杠,但不是全部,只替换第一个逗号之前的斜杠。要做到这一点,我可能必须找到一种方法,只匹配后面跟有包含逗号的字符串的斜杠

是否可以使用oneregexp执行此操作,即不首先用逗号拆分字符串

输入字符串示例:

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:])
不过,我更喜欢使用特定的regexp模式,而不是面向Python的解决方案,因此本质上我可以使用
模式
替换
,这样下面的代码将给出相同的结果:

result = re.sub(pattern, replacement, test)

感谢所有regex避免回答-我想知道我是否可以只使用regex(例如,我可以使用
sed
而不是Python)来实现这一点。

您可以使用查找字符串开头而不查找逗号的lookback表达式来实现这一点。或者不要完全使用
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'
这将打印您需要的内容。尽量避免使用正则表达式,因为它们很慢

item = 'Abc1/Def2/Ghi3,/Dore1/Mifa2/Solla3,Sido4'
print item.replace("/", ".", item.count("/", 0, item.index(",")))