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

时间:2018-09-04 07:14:04

标签: python regex

我是python的新手,我写了以下代码,它们想捕获一个特定的字符串并将其替换为一个特定的字符串。 sid = \“ 1722407313768658 \”

我使用了此正则表达式:sid =(。+?) 但它也捕获不相关的字符串 https://tmobile.demdex.net/dest5.html?d_n sid = 0#

当我在sid = \“ 1722407313768658 \”上运行此正则表达式时(用1900117189066752替换它,我会得到以下结果,该结果不会替换字符串,而是添加i:sid = \ 1900117189066752 \“ 1722407313768658 \”

(而不是我希望拥有1900117189066752的1722407313768658)

这是我的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)

2 个答案:

答案 0 :(得分:0)

由于您要替换特定的字符串,可以通过以下方式实现:

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

答案 1 :(得分:0)

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

  

sid = \“ 1722407313768658 \”

目的是替换数字。

要实现这一目标,我们可以使用正向回顾和提前预测,如下所述: https://www.regular-expressions.info/lookaround.html

  

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

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

  

sid = \“

我们的超前匹配

  

\“

请在此处查看示例:https://regex101.com/r/2pXcMI/2

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

myController

这将返回

  

'sid =“ 1900117189066752”“ safklabsf ipashf oiasfoi asbg fasnk sid =” 1900117189066752“ asjobfaosb asbfaosb asf asfauv sid =” 1900117189066752“。'