以下是测试数据:
LW_3_1_4_5mm_70KV_LE1_4X_2.7995um_Bin1_Export00120013.tiff
LW_3_1_4_5mm_70KV_LE1_4X_2.7995um_Bin1_Export0013.tiff
LW_3_1_4_5mm_70KV_LE1_4X_2.7995um_Bin1_Export0013
0013.tiff
3.tif
0004.tif
.tif
我只想要(.tiff)之前的数字,我怎样才能得到数字? 例如。 firtdata的比赛结果是00120013。 第二个数据的匹配结果是0013。
这是我的regexPattern字符串:^。*(?\ d {4,8})。(tiff | tif)$,但结果不好,即使有超过4位数也只能获得4位数。
答案 0 :(得分:0)
你的正则表达式是贪婪的,尽可能消耗,同时仍允许匹配。
在?
之后加.*
^.*?(?\d{4,8}).(tiff|tif)$
或者,更容易阅读,你可能要求第一个术语的最后一部分是非数字,你可能应该逃避点,并可以简化最后一部分。
试试这个:
^.*\D(\d{4,8})\.tiff?$
答案 1 :(得分:0)
这是因为。*是一个贪婪的运营商。换句话说,它会消耗每个字母,只有当模式的其余部分不匹配时才会回溯。通过使其变得懒惰(。*?)您将获得尽可能多的数字(最多8个)。
答案 2 :(得分:0)
这是正确的表达式:(^。* \ D)?(\ d {4,8})。(tiff | tif)$