itzyx 发表于 2020-10-14 18:48:35

已解决 求助! 正则替换的问题

本帖最后由 itzyx 于 2020-10-14 21:44 编辑

源字符串 :2020-10-14 00-42-09.211354_0.jpg
我想把其余的删除,只保留 09.211354,因为正则最近才刚看,试几次都没成功,希望求助一下各位大佬!

afan 发表于 2020-10-14 19:15:54

Local $sSource = '2020-10-14 00-42-09.211354_0.jpg'
;~ MsgBox(0, '源字符串', $sSource)
Local $sSRERe = StringRegExpReplace($sSource, '.+-(\d+\.\d+)_.+', '${1}')
MsgBox(0, '替换结果', $sSRERe)

绿色风 发表于 2020-10-14 19:02:41

StringSplit
以指定分隔符把字符串拆分成若干子字符串.

StringSplit ( "字符串", "分隔符" [, 标志] )

参数
字符串        要进行分割的字符串.
分隔符        一个或多个作为分隔符的字符(区分大小写).
标志        [可选参数] 设置如何分割字符串,如果需要可以添加由多个标志组成的组合:
标志 = 0 (默认), 则(分隔符)字符串中的每个字符都将用于拆分字符串.
标志 = 1, 则只能以整个分隔符字符串来拆分字符串.
标志 = 2, 关闭第一个元素中的返回数量 - 方便使用 UBound() 得到此基于0开始的数组.
返回值
返回一个数组,默认第一个元素($aArray)保存拆分后子字符串的数量,其余元素($aArray,$aArray ,等等)则保存着拆分后的每个字符串. 如果使用了标志=2,则数量不会返回到第一个元素.
若在要进行分割的字符串中未发现分隔符则将 @error 设置为1,子字符串数量($aArray)设置为1,并且函数将返回整个字符串到第二个元素($aArray).



可以直接 处理

itzyx 发表于 2020-10-14 19:14:55

绿色风 发表于 2020-10-14 19:02
StringSplit
以指定分隔符把字符串拆分成若干子字符串.



谢谢大佬 解答, 但是如果我想用正则替换的方法话,可以怎么写?
我的想法是 用正则表达式.*(?=\d{2}\.\d{6})匹配 2020-10-14 00-42- , (?<=\d{2}\.\d{6}).*匹配_0.jpg , 然后把子表达式 1,2 替换成空白符, 得到的结果剩 09.211354, 但是写的不对{:1_257:}

itzyx 发表于 2020-10-14 19:26:35

afan 发表于 2020-10-14 19:15


对的,就是这个效果,
感觉正则 灵活运用太有难度了, 有的资料写的涉及范围也比较小,还是要多看,多练

gapkiller 发表于 2020-10-15 09:09:22

afan 发表于 2020-10-14 19:15


afan大大来了,正则的问题就解决了!

shqf 发表于 2020-10-15 12:21:44

本帖最后由 shqf 于 2020-10-15 12:29 编辑

楼主3#楼的代码都用上了 (?=)、(?<=)开关,是零宽断言,光对这种正则方法的中文翻译就有多种不同的名称,可见其是正则中比较难以理解的内容,但楼主的理解、代码没有错误啊,且对字串特征的概括也没有错误,按楼主的思路组合起来完全可达到楼主的目的(尽管楼主已经概括出欲输出字串的特征,但思路是删除其余部分来得到剩余部分09.211354,而不是直接提取09.211354这部分内容,显然比afan大大的代码复杂了些,楼主是杀鸡拿出了宰牛刀啊),以下我只是将3#楼的代码搬运再组合起来而已:
Local $sSource = '2020-10-14 00-42-09.211354_0.jpg'
Local $sSRERe = StringRegExpReplace($sSource, '(.*(?=\d{2}\.\d{6})|(?<=\d{2}\.\d{6}).*)', '')
MsgBox(0, '替换结果', $sSRERe)

itzyx 发表于 2020-10-15 12:41:44

shqf 发表于 2020-10-15 12:21
楼主3#楼的代码都用上了 (?=)、(?

确实最近才刚开始 看正则这方面的知识,理解到应用还有很长一段路要走, 还是感谢大佬的解答 我的错误原因找到了, 是没添加分枝条件 |:face (2):

itzyx 发表于 2020-10-15 12:42:25

gapkiller 发表于 2020-10-15 09:09
afan大大来了,正则的问题就解决了!

是的,正则这方面的造诣,A大名不虚传

afan 发表于 2020-10-15 14:08:52

过奖了,我只是用得较多而已,而且一般也是用的基础语法。
页: [1]
查看完整版本: 已解决 求助! 正则替换的问题