文件重命名的正则求解【已解决】
本帖最后由 holley 于 2022-9-16 09:31 编辑平时习惯使用Everything了,最近发现用它查找到文件后,在everything搜索窗口下,如果按F2复制过文件名,未使用esc而是不小心空白处点了一下,则文件名会变成搜索正则字符串,每操作1次增加1次,如:
正常文件名Everything.db
变成了:
caseregex.
caseregex[][][][][][][][][][]
这个问题不知道是属于bug还是正常情况,可能已经出现很久了
今天我发现有个文件的名称变成了这样:
caseregex_26.0.546.0_.7
于是想着能否正则重命名为正常文件,但折腾了一番,无啥效果
尤其是类似,怎么正常提取出小写字母?
目前还停留在
\[(.+)\]_.+_\[(.+)].
这个阶段,只能得到
_26.0.546.0_.7
求解求解~~~:face (2):
Local $sSource = 'caseregex_26.0.546.0_.7'
;~ MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '(?i)(?:^caseregex)?\[(\w)\1\]', '${1}')
MsgBox(0, '替换结果', $sSRERe) 捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是些较常用的,对照看看 StringRegExp 的帮助文档就好。编写表达式可能要发散思维,但写好了就像查字典一样好理解。除非懒得查。 afan 发表于 2022-9-15 21:39
捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是 ...
(?!) 不区分大小写
(?:^caseregex)匹配除caseregex之外的字符
?\[(\w)\1\]匹配[]之间的常见字母、数字或下划线\1 这个反向引用 之前没懂 afan 发表于 2022-9-15 21:39
捕获[]内的一个字母为组名1,其旁边必须还有一个相同的字母(引用组1),再将这些一起替换成一个字母。
都是 ...
(?:^caseregex)?
是整体,不是你分析那样“?\[(\w)\1\]”
页:
[1]