求教一个正则式的代码写法。
本人是一个工程男,没有什么编程基础,近来在quicker上搜到一个功能,希望能把它功能延伸一下自己用,但是一些文件名的识别又不很会写,研究了半天的正则式无果,就在这里提出请教了。quicker上的软件原来的用法是根据文件名自动分类归入文件夹,但是功能有一定的局限。
我们设计院出图有严格的文件名标准,按楼栋、专业、图号、图名、图幅这样的顺序用下划线连起来,如“2号楼_建施_05_四层平面图屋面层平面图_A1”。
请问我需要把仅把楼栋号提取出来这个正则式要如何写?要把志业提取出来要如何写?要把图幅提出来要怎么写?
还请各位不吝赐教,非常感谢。 他用下划线分的很清楚了 用split分割下划线才是最好的 同意楼上,分割下划线还简单一点 https://s3.bmp.ovh/imgs/2022/07/29/9bb0c51baa391c93.png
这个小括号内的叫做原子组,可以使用\1获取到
希望能帮到你 要是会一点编程会很方便获取文件名之后,用split把_进行数组分割,然后再取固定数组的值就行了。正则表达式应该也可以实现 本帖最后由 hanzj06 于 2022-7-29 16:31 编辑
import re
str1 = "2号楼_建施_05_四层平面图屋面层平面图_A1"
res = re.findall('(\d+)号楼_(.+)_(.+)_(.+)_(.+)', str1)
for item in res:
print(item)
2
建施
05
四层平面图屋面层平面图
A1
Process finished with exit code 0
(\d+)号楼_(.+)_(.+)_(.+)_(.+)
括号里是你要匹配并获取的值,其他的可以用不变字符替换 确实 下划线分的很清楚了split才是最方便的 百度一个批量获取文件名的bat,然后获取的数据放在Excel中,用 下划线 分列,很简单的 使用“正向肯定预查”和“反向肯定预查”两种语法规则即可实现(https://www.runoob.com/regexp/regexp-metachar.html)
源文本:2号楼_建施_07_8轴-1轴立面图D轴-A轴立面图_A1
模式:.+(?=_.+_.+_.+_.+)匹配结果:2号楼
模式:(?<=.+_).+(?=_.+_.+_.+) 匹配结果:建施
模式:(?<=.+_.+_).+(?=_.+_.+) 匹配结果:07
模式:(?<=.+_.+_.+_).+(?=_.+) 匹配结果:8轴-1轴立面图D轴-A轴立面图
模式:(?<=.+_.+_.+_.+_).+ 匹配结果:A1 本帖最后由 chengong17 于 2022-7-30 07:33 编辑
~零度 发表于 2022-7-29 17:25
使用“正向肯定预查”和“反向肯定预查”两种语法规则即可实现(https://www.runoob.com/regexp/regexp-met ...
多谢,这个表达式是一个很好的思路。我再深入学习一下。那我再问一下,如果我的命名里头有很多_.+,那我要如何进行定位以下两种情况
一种是第二个下划至第三个下划之间的内容
一种是倒数第二个下载至倒数第三个下划之间的内容
页:
[1]
2