首页 > 解决方案 > 尝试匹配每个正则表达式匹配的第一个字符

问题描述

我正在制作一个小的 python 脚本,它应该随机修改 svg 的向量值的“十”。

我正在编辑的文件的每一行如下所示:

<path style="fill:#1b170e; stroke:none;" d="M32 0L33 1L32 0M35 0L35 4L36 4L35 0z"/>

所以在这种情况下,我想随机修改: - M32 的 3 - 0L33 的 3 - 1L32 的 3 - 等等

我的脚本现在看起来像这样

#opening file
for file in os.listdir(temp_sub_svg):
    f1 = open(temp_sub_svg + '/' + file, 'r')
    f2 = open(temp_sub_gsvg + '/' + file, 'w')

    for line in f1:

        #create random values
        r1 = str(random.randint(0, 9))
        r2 = str(random.randint(0, 9))

        #replace values
        newline = re.sub(r"{r1}\d\s", r2, line)

        f2.write(newline)

    f1.close()
    f2.close()

我想我已经弄清楚如何在我的正则表达式中集成 python 变量,但我的主要问题是我匹配的数据太多。我只想匹配每场比赛的第一个字符。但在这种情况下我匹配的是:

标签: pythonregex

解决方案


您可以尝试使用积极的前瞻(?=\d\s)来寻找但不捕获您不想要的字符。因此,您的正则表达式将如下所示:

newline = re.sub(r"{r1}(?=\d\s)", r2, line)

推荐阅读