質問する
493 次
1 に答える
4
Turn the string with \1
into a raw string by adding an r
immediately before it:
output=p.sub(u'<a href="'+ URL +r'">\1</a>',content)
This prevents the 1 from being interpreted as a backreferenced 1. Proof:
# -*- coding: utf-8 -*-
import re
KEYWORD = u"英語"
URL = u"http://www.google.com/"
content = u"和製英語(わせいえいご)とは、日本で作られた英語風の日本語語彙のことである。"
p=re.compile(u'('+ KEYWORD +u')(?!(([^<>]*?)>)|([^>]*?</a>))',re.UNICODE)
print p.sub(u'<a href="'+ URL +'">\1</a>',content)
print p.sub(u'<a href="'+ URL +r'">\1</a>',content)
prints
和製<a href="http://www.google.com/"></a>(わせいえいご)とは、日本で作られた<a href="http://www.google.com/"></a>風の日本語語彙のことである。
和製<a href="http://www.google.com/">英語</a>(わせいえいご)とは、日本で作られた<a href="http://www.google.com/">英語</a>風の日本語語彙のことである。
Only the latter works (英語 is within the google link).
于 2012-08-24T09:43:48.107 に答える