采用此字符串
version = follow('java.coding.language_v1','3.2.4')
在跟随一词之后,我想在逗号之前的所有内容上用连字符替换所有点,有许多字符串将遵循相同的模式,但是点数在逗号之前会有所不同:
示例 转换后,字符串将如下所示:
version = follow('java-coding-language_v1','3.2.4')
我在后面使用正向后缀,该字符串正好要开始用连字符替换点,但是之后可以匹配点。
(?<=follow\(')
答案 0 :(得分:1)
version = "follow('java.coding.language_v1','3.2.4')"
print (version[0:version.find(",")].replace(".","-")+version[version.find(","):])
version[0:version.find(",")]
获取字符串的前缀,直到其以“,”(follow('java.coding.language_v1'
)结尾version[0:version.find(",")].replace(".","-")
用前缀字符串(follow('java-coding-language_v1'
)中的-代替。version[0:version.find(",")].replace(".","-")+version[version.find(","):])
附加后缀(剩余的)字符串(follow('java-coding-language_v1','3.2.4')
)答案 1 :(得分:0)
您不需要正则表达式。用引号分隔,替换所需的分隔并加入它们:
version = "follow('java.coding.language_v1','3.2.4')"
splits = version.split("'", 2)
version = "'".join([splits[0], splits[1].replace('.', '-'), splits[2]])
# follow(java-coding-language_v1,'3.2.4')
答案 2 :(得分:0)
如果您要使用正则表达式,则先行查找应该是 last 部分,而不是第一部分,这样可以防止 inside 匹配最后(...)
个序列:
\.(?=.*,'.*'\))
“只要可以在字符串末尾看到,'...')
,就匹配任何常规字符”
不需要“匹配组”逻辑,只需匹配.
,用_
替换即可。