hnfeng 发表于 2018-1-12 13:14:06

请教一个正则表达式的问题

想从文本里面提取 有规律 的连号,即:
x0123xx
x1234xx
x2345xx
x3456xx
x4567xx
x5678xx
x6789xx

4个数字中,后面的比前一个多1,最后那位最大是 9(这也就限制了最前面的那位数字最大是6了)
如果使用多个正则表达式来获取,再把结果合并到一起,也可以满足,但是感觉太笨了。能否一个表达式就搞掂呢?

zghwelcome 发表于 2018-1-12 13:50:03

这样不行吗
0123|1234|2345|3456|4567|5678|6789

hnfeng 发表于 2018-1-12 14:08:48

回复 2# zghwelcome


    谢谢

x 是任意数字,也要一起取出,应该怎样写

hnfeng 发表于 2018-1-12 14:34:02

本帖最后由 hnfeng 于 2018-1-12 14:37 编辑

回复 2# zghwelcome


    搞掂了,谢谢
{:face (55):}

\d0123\d{2}|\d1234\d{2}|\d2345\d{2}|\d3456\d{2}|\d4567\d{2}|\d5678\d{2}|\d6789\d{2}

zghwelcome 发表于 2018-1-12 14:35:29

(\d(0123|1234|2345|3456|4567|5678|6789)\d{2})

hnfeng 发表于 2018-1-12 14:42:24

回复 5# zghwelcome

(\d(0123|1234|2345|3456|4567|5678|6789)\d{2})

    这样好像不行,有取到7位数字的,有取到4位数字的8123412
1234
8567866
5678
1012356
0123
2123477
1234
4234564
2345

zghwelcome 发表于 2018-1-12 14:48:43

回复 6# hnfeng


    用模式4,取数组的0或1列

hnfeng 发表于 2018-1-12 14:53:59

本帖最后由 hnfeng 于 2018-1-12 14:57 编辑

回复 7# zghwelcome


    明白了,还能这样用 谢谢

平时只是用模式3,不懂得其他模式是啥意思

kevinch 发表于 2018-1-12 18:55:23

回复 8# hnfeng
(\d(?:0123|1234|2345|3456|4567|5678|6789)\d{2})
用这个取消第二个分组就行了,可以继续用3

hnfeng 发表于 2018-1-12 20:54:39

回复 9# kevinch


谢谢

能用模式3最好用模式3,方便。

不过也稍稍研究了一下模式4,原来每个元素均为一个单独的数组
页: [1]
查看完整版本: 请教一个正则表达式的问题