使用正则表达式查找格式为“[number]”的字符串

时间:2010-11-12 20:20:33

标签: python regex string replace

我在django / python应用程序中有一个字符串,需要搜索[x]的每个实例。这包括括号和x,其中x是1到几百万之间的任何数字。然后我需要用自己的字符串替换x。

即,'Some string [3423] of words and numbers like 9898'会变成'Some string [mycustomtext] of words and numbers like 9898'

请注意,只有括号内的号码受到影响。我不熟悉正则表达式,但认为这会为我做这件事吗?

3 个答案:

答案 0 :(得分:4)

正则表达式正是你想要的。它是Python中的re模块,你需要使用re.sub,它看起来像:

newstring = re.sub(r'\[\d+\]', replacement, yourstring)

如果你需要做很多事情,可以考虑编译正则表达式:

myre = re.compile(r'\[\d+\]')
newstring = myre.sub(replacement, yourstring)

修改:要重复使用该号码,请使用正则表达式组:

newstring = re.sub(r'\[(\d+)\]',r'[mytext, \1]', yourstring)

编辑仍然是可能的。

答案 1 :(得分:1)

使用re.sub

import re
input = 'Some string [3423] of words and numbers like 9898'
output = re.sub(r'\[[0-9]+]', '[mycustomtext]', input)
# output is now 'Some string [mycustomtext] of words and numbers like 9898'

答案 2 :(得分:0)

由于没有其他人在这里跳,我会给你我的非正式版的Python版本

\[(\d{1,8})\]

现在在替换部分中,您可以使用'被动组'$ n来替换(其中n =与括号中的部分对应的数字)。这个是$ 1