找回密码
 加入
搜索
查看: 658|回复: 6

[AU3基础] 文件重命名的正则求解【已解决】

[复制链接]
发表于 2022-9-15 12:17:32 | 显示全部楼层 |阅读模式
本帖最后由 holley 于 2022-9-16 09:31 编辑

平时习惯使用Everything了,最近发现用它查找到文件后,在everything搜索窗口下,如果按F2复制过文件名,未使用esc而是不小心空白处点了一下,则文件名会变成搜索正则字符串,每操作1次增加1次,如:
正常文件名Everything.db
变成了:


caseregex[eE][vV][eE][rR][yY][tT][hH][iI][nN][gG].[dD][bB]
caseregex[cC][aA][sS][eE][rR][eE][gG][eE][xX][[eE][eE]][[vV][vV]][[eE][eE]][[rR][rR]][[yY][yY]][[tT][tT]][[hH][hH]][[iI][iI]][[nN][nN]][[gG][gG]]
这个问题不知道是属于bug还是正常情况,可能已经出现很久了
今天我发现有个文件的名称变成了这样:
caseregex[iI][nN][sS][tT][aA][lL][lL][sS][hH][iI][eE][lL][dD]_26.0.546.0_[cC][rR][aA][cC][kK].7[zZ]
于是想着能否正则重命名为正常文件,但折腾了一番,无啥效果

尤其是类似[iI],怎么正常提取出小写字母?
目前还停留在
\[(.+)\]_.+_\[(.+)].[7]


这个阶段,只能得到
[iI][nN][sS][tT][aA][lL][lL][sS][hH][iI][eE][lL][dD]_26.0.546.0_[cC][rR][aA][cC][kK].7


求解求解~~~
发表于 2022-9-15 12:27:44 | 显示全部楼层
Local $sSource = 'caseregex[iI][nN][sS][tT][aA][lL][lL][sS][hH][iI][eE][lL][dD]_26.0.546.0_[cC][rR][aA][cC][kK].7[zZ]'
;~ MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '(?i)(?:^caseregex)?\[(\w)\1\]', '${1}')
MsgBox(0, '替换结果', $sSRERe)

评分

参与人数 1金钱 +40 收起 理由
holley + 40 有点懵!结果正常,能帮忙给个解说吗?

查看全部评分

发表于 2022-9-15 21:39:38 | 显示全部楼层
捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是些较常用的,对照看看 StringRegExp 的帮助文档就好。编写表达式可能要发散思维,但写好了就像查字典一样好理解。除非懒得查。
 楼主| 发表于 2022-9-16 09:45:27 | 显示全部楼层
afan 发表于 2022-9-15 21:39
捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是 ...

(?!) 不区分大小写
(?:^caseregex)匹配除caseregex之外的字符
?\[(\w)\1\]  匹配[]之间的常见字母、数字或下划线  \1 这个反向引用 之前没懂
 楼主| 发表于 2022-9-16 10:23:45 | 显示全部楼层
afan 发表于 2022-9-15 21:39
捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是 ...


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2022-9-17 08:20:24 | 显示全部楼层
(?:^caseregex)?
是整体,不是你分析那样“?\[(\w)\1\]”

点评

谢谢提醒,周末又看了一遍正则基础教程- -  发表于 2022-9-19 08:33
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 11:11 , Processed in 0.094101 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表