求教一个正则表达式

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:31:13
格式为

Serial1/1:4
或者
Serial4/0/0:0

在一句话中匹配这样的格式的正则应该怎样写?
补充一下,共有4中格式:
1、serial1/1/1:2 ":"号后面有一到二位数字。
2、serial2/0
3、serial1/1:2
4 serial0 serial1 serial3

谢谢!

1楼同学的(?<=)用得妙。不过它同样会匹配Serial:4这样的字符串,当然任何正则的编写都要建立在对上下文的了解之上。

不失一般性,我把它写成:
Serial([0-9]/)?([0-9]/[0-9]):[0-9]
这样Serial:4这样的字符串就不会被匹配了。
这里可以把[0-9]换成\d(限perl和java,别的不知道好不好用)

还有想问一楼同学使用分组不计数的(?=)的意义是?

/(?=Serial).*?(?<=:\d)/
试试

Serial\d+(?:/\d+)?/\d+:\d+