Python在字符串变量中查找和替换regex子字符串

2024-10-04 05:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有多行字符串的变量,我试图将test v1.0替换为upside,但问题是我试图只在整行与模式匹配时才替换它,所以它不应该替换第一个test v1.0.1

pkgLogExtract = dedent("""
                      test v1.0.1
                      nothing

                      test v1.0
                      out
                      in
                      flip
                      """)

print (re.sub(r'\^test v1.0\$', "upside", pkgLogExtract, 1))

我尝试使用re.sub并将'\^test v1.0\$'作为要替换的模式,但它没有替换任何内容。我也用raw标志尝试过,所以r'\^test v1.0\$'但这也不能替代任何东西。你知道我能做什么吗?在


Tags: 字符串intestre内容raw标志模式
1条回答
网友
1楼 · 发布于 2024-10-04 05:32:05

\^与文本^匹配。$也是如此。您需要将flags=re.M传递给re.sub,并删除{}和{}中的反斜杠,以便它们分别匹配行的开始和结束。并转义.。在

请参见IDEONE demo

import re
pkgLogExtract = """
test v1.0.1
nothing
test v1.0
out
in
flip
"""

print (re.sub(r'^test v1\.0$', "ngn", pkgLogExtract, 1, flags=re.M))

注意:我想您知道1代表一个替换(只有第一个匹配项会被替换)。在

注2:您可以省略flags=而使用re.M,但是很多人忘记使用上面提到的count参数,所以最好将参数名保留在这里。在

相关问题 更多 >