Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找格式为';[编号]';使用正则表达式_Python_Regex_String_Replace - Fatal编程技术网

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

我在django/python应用程序中有一个字符串,需要在其中搜索
[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点左右,当整个事情结束的时候。我不想,但我想我可以单独处理那个特殊情况我不想,但我想我可以单独处理那个特殊情况