0

我正在寻找一种使用正则表达式来替换这样的字符串的方法:

The quick #[brown]brown#[clear] fox jumped over the lazy dog.

The quick <a style="color:#3B170B">brown<a style="color:#FFFFFF"> fox jumped over the lazy dog.

然而,颜色代码是从类似的东西中挑选出来的

color_list = dict(
                 brown = "#3B170B",
                 .....
                 clear = "#FFFFFF",
                 )
4

3 回答 3

2

re.sub是你需要的。它采用替换字符串或函数作为其第二个参数。这里我们提供了一个函数,因为生成替换字符串需要的部分是字典查找。

re.sub(r'#\[(.+?)\]', lambda m:'<a style="color:%s">' % colors[m.group(1)], s)
于 2012-12-04T15:35:05.147 回答
0

粗略的伪 python 解决方案如下所示:

for key, value in color_list.items()
  key_matcher = dict_key_to_re_pattern( key )
  formatted_value = '<a style...{0}...>'.format( value )
  re.sub( key_matcher, formatted_value, your_input_string )


def dict_key_to_re_pattern( key ):
   return r'#[{0}]'.format( key )
于 2012-12-04T15:24:23.757 回答
0

只需一行精美的 python 就可以提供帮助:

reduce(lambda txt, i:txt.replace('#[%s]'%i[0],'<a style="color=%s;">'%i[1]),colors.items(),txt)
于 2012-12-04T15:28:05.350 回答