Python 查找格式为';[编号]';使用正则表达式
我在django/python应用程序中有一个字符串,需要在其中搜索Python 查找格式为';[编号]';使用正则表达式,python,regex,string,replace,Python,Regex,String,Replace,我在django/python应用程序中有一个字符串,需要在其中搜索[x]的每个实例。这包括括号和x,其中x是介于1和几百万之间的任意数字。然后我需要用我自己的字符串替换x 也就是说,'一些单词和数字的字符串[3423]如9898'会变成'一些单词和数字的字符串[mycustomtext],如9898' 注:只有括号内的数字受到影响。我不熟悉regex,但认为这对我来说可以吗?regex正是您想要的。这是Python中的re模块,您需要使用re.sub,它看起来像: newstring = re
[x]
的每个实例。这包括括号和x,其中x是介于1和几百万之间的任意数字。然后我需要用我自己的字符串替换x
也就是说,'一些单词和数字的字符串[3423]如9898'
会变成'一些单词和数字的字符串[mycustomtext],如9898'
注:只有括号内的数字受到影响。我不熟悉regex,但认为这对我来说可以吗?regex正是您想要的。这是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)
编译也是可能的。正则表达式正是您想要的。这是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)
也可以进行编译。使用:
使用:
因为没有其他人在这里插手,我将给你们我的非Python版本的正则表达式
\[(\d{1,8})\]
现在,在替换零件中,您可以使用“被动组”$n进行替换(其中n=括号中零件对应的编号)。这一个是1美元,因为没有其他人在这里插手,所以我给你我的非Python版本的正则表达式
\[(\d{1,8})\]
现在,在替换零件中,您可以使用“被动组”$n进行替换(其中n=括号中零件对应的编号)。这将是$1
\d*
匹配零位或更多位
。你可能想要\d+
@Frédéric Hamidi:谢谢,抓到了。@Thomas K,@Frédéric Hamidi。谢谢,非常有帮助。我刚刚意识到,我的替换
实际上应该基于找到的号码。也就是说,如果找到“[2345]”,我可能会将其替换为类似“[mytext,2345]”的内容。如何获取找到的数字?在正则表达式中定义一个组,然后在替换字符串中引用它:re.sub(r'\[(\d+)\]',r'[mytext,\1]',yourstring)
编译也应该可以工作。@rsp:好的,这些注释字段似乎可以使用反斜杠。在方括号\\[\\]
之前应该有一些。我已更正了主要答案中的最后一个示例。\d*
匹配零位或多位
。你可能想要\d+
@Frédéric Hamidi:谢谢,抓到了。@Thomas K,@Frédéric Hamidi。谢谢,非常有帮助。我刚刚意识到,我的替换
实际上应该基于找到的号码。也就是说,如果找到“[2345]”,我可能会将其替换为类似“[mytext,2345]”的内容。如何获取找到的数字?在正则表达式中定义一个组,然后在替换字符串中引用它:re.sub(r'\[(\d+)\]',r'[mytext,\1]',yourstring)
编译也应该可以工作。@rsp:好的,这些注释字段似乎可以使用反斜杠。在方括号\\[\\]
之前应该有一些。我已经纠正了主要答案中的最后一个例子。别忘了有10多个数字。@Keng:你在说什么?我的代码适用于多位数。这是真的,但它只匹配数字0-9;有10个以上的数字;o) @Keng:是否匹配Unicode数字的选择完全取决于此代码运行的上下文。在您的第一个链接中,Raymond给出了一个很好的反例,说明了为什么在某些情况下不应该匹配Unicode数字。这取决于什么样的文字操作是匹配的。是的…我们都知道墨菲说他也会选择它…哈哈…大约在凌晨3点左右,当整个事情结束的时候。别忘了数字不止10个。@Keng:你在说什么?我的代码适用于多位数。这是真的,但它只匹配数字0-9;有10个以上的数字;o) @Keng:是否匹配Unicode数字的选择完全取决于此代码运行的上下文。在您的第一个链接中,Raymond给出了一个很好的反例,说明了为什么在某些情况下不应该匹配Unicode数字。这取决于什么样的文字操作是匹配的。是的…我们都知道墨菲说他也会选择它…哈哈…大约在凌晨3点左右,当整个事情结束的时候。我不想,但我想我可以单独处理那个特殊情况我不想,但我想我可以单独处理那个特殊情况