如何使用正则表达式在python中获取特定str?

2024-06-11 04:01:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像 rjg[]u[ur"fur[ufrng[]"gree

我想用#替换“[”和“]”“between”“,结果是

rjg[]u[ur"fur[ufrng[]"gree=>;rjg[]u[ur"fur#ufrng##"gree

我怎样才能在python中得到这个?你知道吗


Tags: gtbetweenrjgurgreefurufrng
3条回答

没有正则表达式的一行程序。尽管你的解决方案非常好。你知道吗

>>> text = 'rjg[]u[ur"fur[ufrng[]"gre[e]"abc[d"ef]"'
>>> '\"'.join([substr.replace('[', '#').replace(']', '#') if n % 2 == 1 else substr for n, substr in enumerate(text.split('\"')[:-1])]+[text.split('\"')[-1]])
rjg[]u[ur"fur#ufrng##"gre[e]"abc#d"ef]"

这仍然适用于引号数目不均匀以及引号在开头或结尾的情况。你知道吗

我会努力的

L = data.split('"')
for i in range(1, len(L), 2):
    L[i] = re.sub(r'[\[\]]', '#', L[i])
result = '"'.join(L)

一次性解决方案:

import re

text = 'rjg[]u[ur"fur[ufrng[]"gree'
text = re.sub(r'(")([^"]+)(")', lambda pat: pat.group(1)+pat.group(2).replace(']', '#').replace('[', '#')+pat.group(3), text)
print text

输出:

rjg[]u[ur"fur#ufrng##"gree

相关问题 更多 >