其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

关于正则表达式时间替换添加

GG网络技术分享 2025-03-18 16:15 3


问题描述:

如何通过re用一行代码将20221012变为2022-10-12,python解决

网友观点:

固定位置插入字符-不就完了

代码如下,如有帮助请点击一下采纳谢谢:

import re

text = "20221012"

def fp(r):

return "{:0>2}-{:0>2}-{:4}".format(r.group(1),r.group(2),r.group(3))

text = re.sub(r'(\\d{4})(\\d{1,2})(\\d{1,2})',fp,text)

print(text)

Visual Studio 正则替换

这个杂谈会比较简单,但是主要说的是VisualStudio里面的正则操作,没学过正则表达式的我推荐下面这个网址作为入门教程:


坑爹的编码

今天需要些四阶矩阵的乘法,学过线性代数的人大概都知道这东西理解不难,但是当你上手写代码的时候,我敢保证,你会脑子瞬间短路。


先看最终的代码

看上去没啥,但是真正编码的时候就很难操作,因为重复输入太多,不停的重复输入x.M11 * y.M12很快你就会发现你无法保证没有错误的输入。


为了避免大量的重复操作,我要介绍一个用的比较多操作,正则替换。反正也不算是什么新鲜操作。但是一旦碰到这种鬼编码需求的话,使用正则替换会让你的编码工作变得稍微轻松一些。


VisualStudio正则匹配与替换

VisualStudio本身是支持正则匹配的,相信大家都知道,虽然正则大部分时候只用于匹配,但是它也可以用于替换。


首先正则替换的基础是正则匹配,如果不懂,请看页首的推荐教程。如果已经有基础了,那么请你关注一下一个概念:

匹配组(Match Group)

VisualStudio中的正则替换主要依赖匹配组实现的,在正则里面,一个正常的括号里面就表明则是一个匹配组了。在VisualStudio中匹配组的序号从1开始,多个匹配组的序号依次递增1,使用如下方式

$<number>

可以使用匹配组的内容替换指定位置,number为匹配组的序号


演示

我的匹配模板如下

//M11,M11,M11,M12,M21,M13,M31,M14,M41

匹配用的正则表达式为:

//(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2}),(M\\d{2})


替换用的表达式为:

$1 = x.$2 * y.$3 + x.$4 * y.$5 + x.$6 * y.$7 + x.$8 * y.$9


最终替换生成的结果为:

M11 = x.M11 * y.M11 + x.M12 * y.M21 + x.M13 * y.M31 + x.M14 * y.M41

最后

新版本Visual Studio对于后向引用的支持并不友好(不能用?),我以前用VS2013还是VS2015的时候还可以支持后向引用,新版本不清楚是不是使用方式变了,如果有谁知道麻烦评论告知一声。


(写了一个四阶矩阵之后我感觉我头发都秃了,虽然不难)

标签:

提交需求或反馈

Demand feedback