我有一个场景,其中我有一个包含一系列数字,空格或短划线的字符串。我想捕获长度在14到16之间的数字组。我试过各种组合,如下,
1. [0-9](?:[- ]?){14,16}
2. [0-9]([- ]?){14,16}
3. [0-9]{15,16}|[0-9]{4}.?[0-9]{4}.?[0-9]{4}.?[0-9]{3,4}|[0-9]{4}([\\ \\-]?)[0-9]{4}\1[0-9]{4}[ ]?[-]?[ ]?[0-9]{3,4}|[0-9]{14}|[0-9]{4}([\\ ?|\\-?]?)[0-9]{4}\1[0-9]{4}\1[0-9]{4}
我的输入字符串是"我的数据包含字符串34567892345567
或3456789234556734
或345678923455634
和34 5678 92345-567
或34--567 8923---4556-734
或34567-8923 455634
"
唯一的常数是后续数字的长度为14,15或16.我的输出应该捕获以下组,
1. 34567892345567
2. 3456789234556734
3. 345678923455634
4. 34 5678 92345-567
5. 34--567 8923---4556-734
6. 34567-8923 455634
请建议正则表达式捕获上述群组。
答案 0 :(得分:1)
你在附近跳舞。
([0-9][- ]*){14,16}
说明:
(__________){14,16}
发生了14到16次......
_[0-9]_____________
一个数字,然后是......
______[- ]*________
0个或更多个连字符或空格
注意:这将在末尾包含空格和连字符,但不包括开头。要在开头包含空格和连字符,请使用:
[- ]*([0-9][- ]*){14,16}
要在末尾排除空格和连字符,请使用:
([0-9][- ]*){13,15}[0-9]
答案 1 :(得分:0)