python - 尝试匹配每个正则表达式匹配的第一个字符
问题描述
我正在制作一个小的 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 变量,但我的主要问题是我匹配的数据太多。我只想匹配每场比赛的第一个字符。但在这种情况下我匹配的是:
- “32”
- “33”
- “32”
解决方案
您可以尝试使用积极的前瞻(?=\d\s)
来寻找但不捕获您不想要的字符。因此,您的正则表达式将如下所示:
newline = re.sub(r"{r1}(?=\d\s)", r2, line)
推荐阅读
- c++ - mysql 连接但 Qt6 插件没有
- html - 简单的响应式 HTML、CSS 网站表格错误
- javascript - 来自另一个 HTML 文件的 BootStrap 4 模态内容
- swift - transferUserInfo(_:) 不支持发送类
- javascript - 我在反应中重新加载页面后丢失了道具
- flutter - 如何在 ListView 的开头有一个“半透明的命中行为”填充?
- python - 索引除最后两个值之外的所有值
- html - 如何使用 React 更改悬停效果的“react-ionicons”颜色
- visual-studio - 通过扩展读取/写入任意 Visual Studio 选项?
- php - 根据 wp_usermeta 表新建 wp 数据表