Regex Python在两个字符之间替换一个字符并保留其余字符
我试图替换两个已知字符之间的逗号(Regex Python在两个字符之间替换一个字符并保留其余字符,regex,python-3.x,Regex,Python 3.x,我试图替换两个已知字符之间的逗号(§) 我的测试字符串:“§Bandra(西部),孟买§” 预期输出:”§Bandra(西部);孟买§’ 我试过: re.sub(r'\§[^\,]+\,[^\,]+\§',r'\§[^\,]+\;[^\,]+\§', '§Bandra(West),Mumbai§') 但这只是将正则表达式作为字符串返回:\§[^',']+\;[^\',']+\§ 我做错了什么 您需要正则表达式组,这些组用括号创建,然后用反斜杠和数字引用: >>> re.su
§
)
我的测试字符串:“§Bandra(西部),孟买§”
预期输出:”§Bandra(西部);孟买§’
我试过:
re.sub(r'\§[^\,]+\,[^\,]+\§',r'\§[^\,]+\;[^\,]+\§', '§Bandra(West),Mumbai§')
但这只是将正则表达式作为字符串返回:\§[^',']+\;[^\',']+\§
我做错了什么 您需要正则表达式组,这些组用括号创建,然后用反斜杠和数字引用:
>>> re.sub(r'(§[^,]+),([^,]+§)', r'\1;\2', '§Bandra(West),Mumbai§')
'§Bandra(West);Mumbai§'
这里,(§[^,]+)
对应于\1
,(§[^,]+§)
对应于\2
更多信息:在(…)
和\number
顺便说一下:
- 你有一堆不必要的反斜杠,我去掉了
- 在此特定示例中,您可以使用更简单的模式:
甚至是一个简单的>>> re.sub(r'(§.*),(.*§)', r'\1;\2', '§Bandra(West),Mumbai§') '§Bandra(West);Mumbai§'
。替换
:
>>> '§Bandra(West),Mumbai§'.replace(',', ';') '§Bandra(West);Mumbai§'
- 这个表达式
(§[^§\r\n]*),([^§\r\n]*§)
以及替代,
\1;\2
可能只是在这里工作
试验
输出
如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入
import re
string = """
§Bandra(West);Mumbai§
§Bandra(West),Mumbai§
§,§
Bandra(West),Mumbai§
"""
print(re.sub(r'(§[^§\r\n]*),([^§\r\n]*§)', r"\1;\2", string))
§Bandra(West);Mumbai§
§Bandra(West);Mumbai§
§;§
Bandra(West),Mumbai§