Python 尝试匹配每个正则表达式匹配的第一个字符

Python 尝试匹配每个正则表达式匹配的第一个字符,python,regex,Python,Regex,我正在制作一个小python脚本,它应该随机修改svg向量值的“十个” 我正在编辑的文件的每一行都如下所示: <path style="fill:#1b170e; stroke:none;" d="M32 0L33 1L32 0M35 0L35 4L36 4L35 0z"/> newline = re.sub(r"{r1}(?=\d\s)", r2, line) 我想我已经知道了如何在正则表达式中集成python变量,但我的主要问题是匹配了太多的数据。我只想匹配每场比赛的第一个角

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

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

<path style="fill:#1b170e; stroke:none;" d="M32 0L33 1L32 0M35 0L35 4L36 4L35 0z"/>
newline = re.sub(r"{r1}(?=\d\s)", r2, line)
我想我已经知道了如何在正则表达式中集成python变量,但我的主要问题是匹配了太多的数据。我只想匹配每场比赛的第一个角色。但我在本例中匹配的是:

  • “32”
  • “33”
  • “32”

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

<path style="fill:#1b170e; stroke:none;" d="M32 0L33 1L32 0M35 0L35 4L36 4L35 0z"/>
newline = re.sub(r"{r1}(?=\d\s)", r2, line)

您可以像这样使用正则表达式匹配的索引

def modify(a,b,s):
    for m in re.finditer(r"{a}\d\s", s):
        s[m.start(0)] = b
    return s


#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 = mondify(r1,r2,line)

        f2.write(newline)

    f1.close()
    f2.close()