【发布时间】:2013-10-17 13:04:27
【问题描述】:
为什么 \g<0> 不能与 unicode 正则表达式一起使用?
当我尝试使用\g<0> 在具有普通字符串正则表达式的组之前和之后插入一个空格时,它可以工作:
>>> punct = """,.:;!@#$%^&*(){}{}|\/?><"'"""
>>> rx = re.compile('[%s]' % re.escape(punct))
>>> text = '''"anständig"'''
>>> rx.sub(r" \g<0> ",text)
' " anst\xc3\xa4ndig " '
>>> print rx.sub(r" \g<0> ",text)
" anständig "
但使用 unicode 正则表达式,不会添加空格:
>>> punct = u""",–−—’‘‚”“‟„!£"%$'&)(+*-€/.±°´·¸;:=<?>@§#¡•[˚]»_^`≤…\«¿¨{}|"""
>>> rx = re.compile("["+"".join(punct)+"]", re.UNICODE)
>>> text = """„anständig“"""
>>> rx.sub(ur" \g<0> ", text)
'\xe2\x80\x9eanst\xc3\xa4ndig\xe2\x80\x9c'
>>> print rx.sub(ur" \g<0> ", text)
„anständig“
- 如何让
\g在 unicode 正则表达式中工作? - 如果 (1) 不可行,如何让 unicode 正则表达式输入
punct中字符前后的空格?
【问题讨论】:
标签: python regex string unicode regex-group