BCXADServer() : Server(), m_bBet(false) {}
我想将Server()替换为它所在的位置,而不是像其他任何地方一样将它替换为BCXADServer()
所以期望的输出是 -
BCXADServer() : <some-string>, m_bBet(false) {}
但我正在
BCXAD<some-string> : <some-string>, m_bBet(false) {}
它正在两个地方取代。
像这样,它位于文件的多个位置。我确实尝试过re.sub和replace()方法但它总是替换所有地方而不是所需的地方。
请帮我解决这个问题。
答案 0 :(得分:1)
使用regex
与\b
匹配工作边界,因此如果它在其他单词的子字符串中
import re
s = 'BCXADServer() : Server(), m_bBet(false) {}'
re.sub(r'\bServer\(\)', 'XXX', s) # replace Server() with XXX
# 'BCXADServer() : XXX, m_bBet(false) {}'
答案 1 :(得分:1)
您可以使用不同的方式将所需的字符串替换为所需的字符串。
例如:
使用正则表达式:
import re
my_input_string = "BCXADServer() : Server(), m_bBet(false) {}"
pattern = r'\bServer\(\)'
to_replace = "<some-string>"
replaced_string = re.sub(pattern, to_replace, my_input_string)
print(replaced_string)
输出:
BCXADServer() : <some-string>, m_bBet(false) {}
分割字符串并使用replace()
:
my_input_string = "BCXADServer() : Server(), m_bBet(false) {}"
def replace_string(input_string = "", replace_string = ""):
b = list(input_string.split(":"))
return ":".join([b[0], b[1].replace("Server()", replace_string)])
replaced_string = replace_string(my_input_string, "<some-string>")
print(replaced_string)
输出:
BCXADServer() : <some-string>, m_bBet(false) {}