找回密码
 加入
搜索
查看: 2754|回复: 9

[网络通信] 已解决 求助! 正则替换的问题

[复制链接]
发表于 2020-10-14 18:48:35 | 显示全部楼层 |阅读模式
本帖最后由 itzyx 于 2020-10-14 21:44 编辑

源字符串 :2020-10-14 00-42-09.211354_0.jpg
我想把其余的删除,只保留 09.211354,因为正则最近才刚看,试几次都没成功,希望求助一下各位大佬!
发表于 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[0])保存拆分后子字符串的数量,其余元素($aArray[1],$aArray[2] ,等等)则保存着拆分后的每个字符串. 如果使用了标志=2,则数量不会返回到第一个元素.
若在要进行分割的字符串中未发现分隔符则将 @error 设置为1,子字符串数量($aArray[0])设置为1,并且函数将返回整个字符串到第二个元素($aArray[1]).



可以直接 处理
 楼主| 发表于 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, 但是写的不对
 楼主| 发表于 2020-10-14 19:26:35 | 显示全部楼层

对的,就是这个效果,
感觉正则 灵活运用太有难度了, 有的资料写的涉及范围也比较小,还是要多看,多练
发表于 2020-10-15 09:09:22 | 显示全部楼层

afan大大来了,正则的问题就解决了!
发表于 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)
 楼主| 发表于 2020-10-15 12:41:44 | 显示全部楼层
shqf 发表于 2020-10-15 12:21
楼主3#楼的代码都用上了 (?=)、(?

确实最近才刚开始 看正则这方面的知识,理解到应用还有很长一段路要走, 还是感谢大佬的解答 我的错误原因找到了, 是没添加分枝条件 |  
 楼主| 发表于 2020-10-15 12:42:25 | 显示全部楼层
gapkiller 发表于 2020-10-15 09:09
afan大大来了,正则的问题就解决了!

是的,正则这方面的造诣,A大名不虚传
发表于 2020-10-15 14:08:52 | 显示全部楼层
过奖了,我只是用得较多而已,而且一般也是用的基础语法。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 13:02 , Processed in 0.218844 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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