Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 - Fatal编程技术网

如何在python中使用正则表达式捕获字符串并将其替换为所需的字符串

如何在python中使用正则表达式捕获字符串并将其替换为所需的字符串,python,regex,Python,Regex,我是python新手,我编写了以下代码,假设捕获一个特定字符串并用一个特定字符串替换它。 sid=\“172240731768658\” 我使用了这个正则表达式:sid=(.+?) 但它也捕捉到了不相关的字符串 sid=0# 当我在sid=\'172240731768658\'上运行这个正则表达式时(用1900117189066752替换它,我得到的结果不是替换字符串而是添加I:sid=\1900117189066752\'172240731768658\' (我想要19001171890667

我是python新手,我编写了以下代码,假设捕获一个特定字符串并用一个特定字符串替换它。 sid=\“172240731768658\”

我使用了这个正则表达式:sid=(.+?) 但它也捕捉到了不相关的字符串 sid=0#

当我在sid=\'172240731768658\'上运行这个正则表达式时(用1900117189066752替换它,我得到的结果不是替换字符串而是添加I:sid=\1900117189066752\'172240731768658\'

(我想要1900117189066752而不是172240731768658)

这是我的python代码:

 import re
                content = c.read()

                ################################################################

                # change sessionid in content
                replace_small_sid = str('sid=\\' + "\\"+str(sid) + "\\" + " ")
                content = re.sub("sid=(.+?)", replace_small_sid, content)

由于要替换特定字符串,可以通过以下方式进行替换:

content.replace("1722407313768658","1900117189066752")

据我所知,您希望以以下形式匹配字符串模式:

sid=\“172240731768658\”

目的是替换数字

为了实现这一点,我们可以使用积极的lookbehind和lookaheads,如下所述:

向前看和向后看,统称为“环顾”,是零长度断言,就像本教程前面介绍的行的开头和结尾,以及单词的开头和结尾锚点一样。区别在于环视实际上匹配字符,但随后放弃匹配,只返回结果:匹配或不匹配。这就是为什么它们被称为“断言”。它们不使用字符串中的字符,只声明是否可能匹配

在这种情况下,我们的后视将匹配

sid=\”

我们的前瞻性将相匹配

\"

请参见此处的示例:

最后,我们可以使用它进行匹配和替换,如下所示:

import re
line = "sid=\"1722407313768658\" safklabsf ipashf oiasfoi asbg fasnk sid=\"65641\" asjobfaosb asbfaosb asf asfauv sid=\"651564165\"."
replace_with = '1900117189066752'
line = re.sub('(?<=sid=\\\")\d+(?=\\\")', replace_with, line)
line
重新导入
line=“sid=”1722407313768658\“SAKLABSF ipashf oiasfoi asbg fasnk sid=”65641\“asjobfaosb asf asfauv sid=”651564165\”
将_替换为='1900117189066752'

line=re.sub(“(?如果要搜索特定字符串,则不需要正则表达式。只需使用
str.replace
。正则表达式用于搜索模式,即具有特殊结构的特定字符串,如“前两个字符是数字,然后是3到5个大写字母,…”或者类似的东西我建议你找一个在线正则表达式测试器,像这样你可以很容易地测试你的正则表达式的行为。请看@SpghttCd我不知道sid=之后的值是什么,它可以是任何数字,所以我必须使用正则表达式。好的,但是
代表任何字符,而不仅仅是数字。你不只是在插入一个不包含数字的字符串吗但数字呢?我的第一个想法也是,但OP已经明确表示,他们实际上需要一般替换,也就是说,这实际上是一个正则表达式。@Gautam Kumar-我希望能够捕获任何包含数字的字符串,并将其替换为另一个包含数字的字符串。这有点奇怪,但当我尝试替换字符串时,它不允许我…although通过测试正则表达式,我发现它捕捉到了数字,但出于某种原因,它没有将其更改为所需的字符串。非常奇怪!如果您能够复制您在此处使用的代码,则不应该(希望如此)很难调试。这就是我调试代码时遇到的问题。我的正则表达式实际上捕获了它应该捕获的内容,但当我要替换字符串时,它什么也不做……您是否将re.sub(模式、替换、原始字符串)分配给对象?例如:line=re.sub('(?除非你能提供准确的代码和类似的数据,这样错误是可重复的,否则我不确定还有什么建议。