Python-查找并替换字符串变量中的正则表达式子字符串

标签 python regex string

我有一个带有多行字符串的变量,我正在尝试将行 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\$' 但这也不能替代任何内容。知道我能做什么吗?

最佳答案

\^ 与文字 ^ 匹配。 $ 也是如此。您需要将 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 参数,因此最好将参数名称保留在此处。

关于Python-查找并替换字符串变量中的正则表达式子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798808/

相关文章:

c# - 是否有将 "YYYYMMDDHHMMSS.UUUUUU-TZO"格式转换为 C# DateTime 的 API?

python - Python 3.2 中字符串的 'or' 运算符出现问题

python - 从 pandas 数据框列值的两侧添加 n 个值

python - 使用 django 将超链接插入文本

java - 输出打印第一个字符串和第二个字符串的一部分。字符串大小设置不正确

java - 逐行执行Java

python - 以编程方式确定 python 模块是否已安装或处于开发模式

c++ - 用于解析 xrandr 响应的正则表达式

python - 如何使用否定先行删除两个字符之间的搜索

java - 两位小数的正则表达式