正则表达式匹配并且当它们与您不必采用的符号混合时采用N个符号

时间:2014-05-21 08:00:58

标签: regex

以下是几个例子:

NUM12345678OTHERSTR

NUM 123 45 678 OTHERSTR

NUM123 45-678 OTHERSTR

NUM 123 456 789 1011

我需要得到12345678

所以我需要选择位于某个标记NUM之后的数字,并且可能包含用空格和短划线混合的数字。这不是问题,我能够创建这样的模式。但我需要用另一个标记(OTHERSTR)或其长度来限制这个数字。我需要选择例如至少4位,最多8位数。我想过{4,8},但无法弄清楚如何将它仅应用于数字而不是空间等。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

用于分隔字符串

(?<=NUM).*(?=OTHERSTR)

用于分隔字符数:

^\D*((?:\d\D*){4,8})

演示:http://regex101.com/r/aL6tE7

您将在第一个捕获组中获得123 456 78,为此您可以使用空格的正则表达式替换来获取所需的输出。因此,基于您获得的结果,请对\D+进行正则表达式替换。