我在上使用Python2.7,下面是代码片段:
# -*- coding: utf-8 -*-
KEYWORD = u"英語"
URL = u"http://www.google.com/"
content = u"和製英語(わせいえいご)とは、日本で作られた英語風の日本語語彙のことである。"
p=re.compile(u'('+ KEYWORD +u')(?!(([^<>]*?)>)|([^>]*?</a>))',re.UNICODE)
output=p.sub(u'<a href="'+ URL +'">\1</a>',content)正则表达式和\1的正确工作,但是反向引用不能工作! \1的输出是这样的:ន
我尝试用encode('utf-8')修改代码,但结果是相同的:
p=re.compile(u'('+ KEYWORD +u')(?!(([^<>]*?)>)|([^>]*?</a>))'.encode('utf-8'),re.UNICODE)
output=p.sub(u'<a href="'+ URL +'">\1</a>'.encode('utf-8'),content.encode('utf-8'))有人能告诉我怎么回事吗?
发布于 2012-08-24 09:43:48
在\1字符串之前添加一个r,将其转换为原始字符串:
output=p.sub(u'<a href="'+ URL +r'">\1</a>',content)这将防止将1解释为反向引用1。
# -*- 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)版画
和製<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>風の日本語語彙のことである。只有后者起作用(英語在google链接中)。
https://stackoverflow.com/questions/12106596
复制相似问题