I definiertunerwartete re.sub Verhalten
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)
und machte den folgenden Aufruf:
print(italicize_math(s)
Das Ergebnis ist
'<i>f</i>(x) has an occ of <i>x</i> but no <i>y</i>'
, die nicht das, was ich erwartet hatte. Ich wollte diese statt:
'<i>f</i>(<i>x</i>) has an occ of <i>x</i> but no <i>y</i>'
Kann mir jemand sagen, warum das erste Auftreten von x wurde nicht in dem „i“ -Tags eingeschlossen in?
Die Lösungen Ich habe ziemlich gut waren, aber jetzt merke ich, ich etwas stärker als Wortgrenzen müssen, wie \ b gewährt nicht einschränkend genug. Ich möchte 4x in 4 x umgewandelt werden. Mit anderen Worten, das Vorhandensein von 4 neben x sollte eine Grenze sein. Ich werde Lookahead Assertions betrachten. – user1741137
Dank der unten stehenden Hinweise habe ich herausgefunden, dass p = '(? \ 1 "Entsprach meinen Bedürfnissen – user1741137