s='f(x) has an occ of x but no y'
def italicize_math(line):
p="(\W|^)(x|y|z|f|g|h)(\W|$)"
repl=r"\1<i>\2</i>\3"
return re.sub(p,repl,line)
,并提出以下呼吁:
print(italicize_math(s)
结果是
'<i>f</i>(x) has an occ of <i>x</i> but no <i>y</i>'
这是不是我的预期。我想这个,而不是:
'<i>f</i>(<i>x</i>) has an occ of <i>x</i> but no <i>y</i>'
任何人都可以告诉我为什么x的第一次出现没有被包含在“我”标签内?
该解决方案还不错,但现在我知道我需要的东西,如单词边界更强大的通过\ B中提供不限制足够。我想将4x转换为4 x。换句话说,x旁边的4应该是一个边界。我会看看前瞻断言。 – user1741137
由于下面的线索,我发现p ='(?<![A-Za-z])([xyzfgh])(?![A-Za-z])'和repl =' \ 1 '符合我的需求 – user1741137