找回密码
 加入
搜索
查看: 3384|回复: 5

[效率算法] 【已解决】关于正则 - 请问这类的数据应该如何用正则0001/0001-001.jpg

  [复制链接]
发表于 2011-8-23 09:15:18 | 显示全部楼层 |阅读模式
本帖最后由 itestit 于 2011-8-23 12:34 编辑

请问这个类型数据应该如何写正则 (我用StringRegExp,返回匹配结果数组)
0001/0001-01.doc
0001/0001-02.doc
......
0001/0001-99.doc
0002/0002-01.doc
0002/0002-02.doc
......
0002/0002-99.doc
......

用([0-9]{1,4})/([0-9]{1,4})-([0-9]{1,4}).doc 这样的格式经测试并不能实现获取 获取到的StringRegExp返回却是
0001/0001
0001/01
发表于 2011-8-23 11:52:49 | 显示全部楼层
(\d+)\/\1\-\d+\.doc
这个试下
 楼主| 发表于 2011-8-23 12:28:02 | 显示全部楼层
本帖最后由 itestit 于 2011-8-23 12:32 编辑
(\d+)\/\1\-\d+\.doc
这个试下
kevinch 发表于 2011-8-23 11:52


谢谢kevinch,但用此正则返回的前三个都是
0001
0001
0001

如果用([0-9]{1,4})/([0-9]{1,4})\-([0-9]{1,4})则返回的是
0001
0001
001

StringRegExp他把匹配的结果拆分了
正常应该是0001/0001-001.doc
发表于 2011-8-23 12:31:50 | 显示全部楼层
把没用的括号去掉就好了

#include<Array.au3>
$str = "0001/0001-99.doc 0002/0002-01.doc 0002/0002-02.doc"
$test = StringRegExp($str,"[0-9]{1,4}/[0-9]{1,4}-[0-9]{1,4}.doc",3)
_ArrayDisplay($test)
 楼主| 发表于 2011-8-23 12:34:12 | 显示全部楼层
把没用的括号去掉就好了
www378660084 发表于 2011-8-23 12:31



    感谢!  www378660084 兄的正则实现了全部需求  谢谢!
发表于 2011-8-23 16:39:05 | 显示全部楼层
#include<Array.au3>
$str = "0001/0001-99.doc 0002/0002-01.doc 0002/0002-02.doc"
$test = StringRegExp($str,"\d+\/\d+\-\d+\.doc",3)
_ArrayDisplay($test)
我也无法理解为何\1会出现这样的情况,au3的正则一直用起来怪怪的。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-23 02:10 , Processed in 0.079145 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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