Python 匹配所有出现的点,并在字符串中的单词后替换为连字符
拿这根绳子Python 匹配所有出现的点,并在字符串中的单词后替换为连字符,python,regex,Python,Regex,拿这根绳子 version = follow('java.coding.language_v1','3.2.4') 在单词follow之后,我想用连字符替换逗号之前所有的点,有许多字符串将遵循相同的模式,但逗号之前的点的数量会有所不同: 范例 转换后,字符串将如下所示: version = follow('java-coding-language_v1','3.2.4') 我已经使用了一个正向的lookback,它到达了字符串中的点,我想开始用连字符替换点,但之后可以匹配点 (? vers
version = follow('java.coding.language_v1','3.2.4')
在单词follow之后,我想用连字符替换逗号之前所有的点,有许多字符串将遵循相同的模式,但逗号之前的点的数量会有所不同:
范例
转换后,字符串将如下所示:
version = follow('java-coding-language_v1','3.2.4')
我已经使用了一个正向的lookback,它到达了字符串中的点,我想开始用连字符替换点,但之后可以匹配点
(?
version[0:version.find(“,”)
获取字符串的前缀,直到它以“,”结尾(follow('java.coding.language_v1'
)
version[0:version.find(“,”).replace(“.”,“-”)
在前缀字符串中将.s替换为-(follow('java-coding-language_v1')
)
version[0:version.find(“,”)。替换(“.”,“-”)+version[version.find(“,”)
附加后缀(剩余)字符串(follow('java-coding-language_v1','3.2.4')
)
您不需要正则表达式。在引号上拆分,替换所需的拆分并加入它们:
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')
如果要使用正则表达式,则前瞻应该查找最后一部分,而不是第一部分,这样可以防止最后一个(…)
序列中的匹配:
\(?=.*,.'.'\)
“匹配任何常规句点字符,前提是我仍然可以看到字符串末尾的,'…')
”
不需要“匹配组”逻辑,您只匹配了
,替换为。
我不懂你的字串。实际上怎么样?
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')