如何在Python中修改此字符串

sar*_*ele 1 python regex string

我有一个字符串,我需要在每个'['或']'前面添加一个'\',除非括号括起一个像这样的x:'[x]'.在其他情况下,括号将始终包含一个数字.

示例: 'Foo[123].bar[x]'应该成为'Foo\[123\].bar[x]'.

实现这一目标的最佳方法是什么?非常感谢事先.

g.d*_*d.c 8

这样的事情应该有效:

>>> import re
>>>
>>> re.sub(r'\[(\d+)\]', r'\[\1\]', 'Foo[123].bar[x]')
'Foo\\[123\\].bar[x]'
Run Code Online (Sandbox Code Playgroud)


cmh*_*cmh 6

你可以做到这一点,而不是像这样的正则表达式:

s.replace('[', '\[').replace(']', '\]').replace('\[x\]', '[x]')
Run Code Online (Sandbox Code Playgroud)

  • 当然,在那种情况下,我会提倡正则表达式方法.我提出(可以说)一个概念上更简单的方法,当这不是一个问题时.如果性能是一个问题,单个线性扫描(一个前瞻)将无论如何都将胜过正则表达式. (4认同)
  • 在测试字符串''Foo [123] .bar [x] zzzzz'*100000`,2M字符长,我发现`re.sub`需要250毫秒(甚至确保模式被编译)而``replace`只需要36毫秒. (2认同)