regex 如何改变python字符串的模式?[已关闭]

xzv2uavs  于 2022-12-27  发布在  Python
关注(0)|答案(1)|浏览(121)

已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

昨天关门了。
Improve this question
我有一个如下的字符串:

"1 Case (321000, number of steps 100), 2 Case (322000, number of steps 23)"

这里321000322000是案例ID。我想检测它们(类似于以下模式:"\((.\d+),",基本上是(,之间的每一位),检查它们是否为4位长,如果不是,则删除所需数量的第一位,以使它们为4位长。
因此,这里的预期输出为:

"1 Case (1000, number of steps 100), 2 Case (2000, number of steps 23)"

在python中有什么方法可以做到这一点吗?比如用regex?谢谢!

lx0bsm1f

lx0bsm1f1#

下面来解释@tripleee的精彩回答:

re.sub(r"\(\d+(\d{4}),", r'(\1,', text)
  • \(:匹配左括号,如您指定的
  • \d+:检测一个或多个数字,这部分是任意长度的数字,因为如果需要,我们将删除这部分
  • (\d{4}):指定恰好具有4位数字的捕获组,如果需要截断其他数字,则将保留这些数字
  • ,:应该跟在数字后面的结束逗号

第二个参数是replacement(替换),它写入包含的(,,并在它们之间放置\1,这意味着找到的第一个捕获组。

相关问题