Python 使用一个正则表达式替换字符并将其包装在标记中
我要转换字符串:Python 使用一个正则表达式替换字符并将其包装在标记中,python,regex,Python,Regex,我要转换字符串: CPP到C++ CP至C+ C至C 目前,我使用两个正则表达式执行此操作: mystring = "CPP" a = re.sub(r"P", "+", mystring) b = re.sub(r"(\++)", r"<sup>\1</sup>", a) print b # C<sup>++</sup> mystring=“CPP” a=re.sub(r“P”,“+”,mystring) b=re.sub(r“(\++
到CPP
C++
至CP
C+
至C
李>C
mystring = "CPP"
a = re.sub(r"P", "+", mystring)
b = re.sub(r"(\++)", r"<sup>\1</sup>", a)
print b # C<sup>++</sup>
mystring=“CPP”
a=re.sub(r“P”,“+”,mystring)
b=re.sub(r“(\++)”,r“\1”,a)
打印B+C++
这是有效的;但是我想用一个正则表达式来实现这一点。这可能吗?可以通过更换零件中的匿名功能通过
re.sub
实现
>>> def change(s):
return re.sub(r'\b(C)(P{1,2})\b', lambda m: m.group(1) + ('<sup>++</sup>' if len(m.group(2)) == 2 else '<sup>+</sup>'), s)
>>> print(change('CPP'))
C<sup>++</sup>
>>> print(change('CP'))
C<sup>+</sup>
>>> print(change('CP'))
C<sup>+</sup>
>>> print(change('C'))
C
def更改:
返回re.sub(r'\b(C)(P{1,2})\b',lambda m:m.group(1)+('++'如果len(m.group(2))==2 else'+',s)
>>>打印(更改(“CPP”)
C++
>>>打印(更改('CP'))
C+
>>>打印(更改('CP'))
C+
>>>打印(更改('C'))
C
这里有一个类似的解决方案:
import re
s = "CPP" # to C<sup>++</sup>
rx = r"(?<=\bC)P+\b"
res = re.sub(rx, (lambda m: "<sup>%s</sup>"%("+" * len(m.group(0)))), s)
print(res)
重新导入
S=C++的“CPP”
rx=r“(?可以说,这可能不是一个更好的解决方案。仅仅因为它是一行,并不意味着它更好。好吧,写一个比这个更好的解决方案。我是说,在一行中完成它可能不是一个更好的解决方案