如果匹配模式,是否可以使用正则表达式替换字符串中的特定字符?
例如,如果\
位于两个X
个字符内,我想将$
替换为 $some\string here inside$ and [some here \out side]
,否则它应保持不变。
$someXstring here inside$ and [some here \out side]
我期望在输出中有什么
re.sub(r'\$*\\*\$', 'X', b)
$
将X
替换为re.sub
。我应该如何使用FILE *test;
student st;
int i = 0;
test = fopen("example.bin", "rb");
while (feof(test))
{
fread(&st, sizeof(st),1,test);
Class[i] = st;
i++;
}
fclose(test);
命令执行此操作?
答案 0 :(得分:3)
您可以lambda
使用re.sub
使用str.replace
来替换与您的模式匹配的\\
s = "$some\string here inside$ and [some here \out side]"
import re
print(re.sub(r"\$.*\\.*\$",lambda x: x.group().replace("\\","X"),s))
$someXstring here inside$ and [some here \out side]
答案 1 :(得分:1)
Regexless解决方案:
s = r'$some\string here inside$ and [some here \out side]'
def solution(s):
inside = False
for c in s:
if c == '$':
inside = not inside
yield c
elif inside and c == '\\':
yield 'X'
else:
yield c
print(''.join(solution(s)))
我知道一些解释会受到欢迎,但目前我不知道我能解释什么。