代码之家  ›  专栏  ›  技术社区  ›  rsp

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

  •  2
  • rsp  · 技术社区  · 14 年前

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

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

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

    3 回复  |  直到 14 年前
        1
  •  4
  •   Thomas K    14 年前

    Regex正是你想要的。这是Python中的re模块,您需要使用re.sub,它看起来像:

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

    如果需要做很多工作,请考虑编译regex:

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

    编辑: 重复使用号码 ,使用regex组:

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

    编译仍然是可能的。

        2
  •  1
  •   Adam Rosenfield    14 年前

    使用 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'
    
        3
  •  0
  •   Keng    14 年前

    既然没人插手,我就给你我的非Python版本的regex

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

    现在在替换部件中,您可以使用'passive group'$n替换(其中n=括号中部件对应的数字)。这个是1美元