【发布时间】:2020-11-26 23:13:53
【问题描述】:
我遇到了一个我不明白的正则表达式问题。我正在尝试用分号替换字符串之间的逗号,但它不起作用。下面是一个示例字符串。我设置了一个正则表达式来替换正则表达式非捕获组中“序列”之后的所有内容,因此末尾的逗号应该替换为非捕获组中唯一的子字符串,即分号。但是,它不起作用。当我将 (?:sequence:) 作为非捕获组时,它似乎只保留了任何字符串。只要我添加 \d,它就会替换整个东西。我不知道为什么。
在我真正的问题中,我有很多用冒号标记并以分号结尾的内容标签。在标签序列中,有一个错误的逗号而不是分号,我需要替换它,但保持一切不变。因此,解决方案应该只是将 sequence:2 更改为 sequence:2;
a_string = "tag1: content1 is this tag2: 0.1 amount; tag3: july 2020; sequence:2, tag4: content4"
new_string = re.sub(r"(?:sequence\:)(?:\d)(\,)", ";", a_string)
new_string
我查看了其他应该可以工作的solutions,但不要这样做。感谢您提供任何帮助,如果我可以更清楚地说明这个问题,请告诉我。
【问题讨论】: