Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Python 匹配所有出现的点,并在字符串中的单词后替换为连字符_Python_Regex - Fatal编程技术网

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')