我需要查找字符串中可能出现的3种格式(A = Letter;#= digit):
A###A
A####
A#####
示例:
This booking has the ID of A#####.
字符串只能包含三个示例模式中的一个。我用OR运算符编写了这个REGEXP,所以我可以检查并提取我需要的ID:
([a-zA-Z]\d{4})|([a-zA-Z]\d{3}[a-zA-Z])|([a-zA-Z]\d{5})
问题是,它没有从REGEXP返回最佳匹配,而是第一次匹配。例如,如果字符串包含A#####
,它将返回A####
,忽略最后一位数 - 因为它已经与之前的模式匹配。
我错过了什么? 提前谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
在匹配4个字符之前,您可以检查匹配的5个字符。 这样它在检测到4之前总会检测到5。 您只需切换5和4即可。
([a-zA-Z]\d{5})|([a-zA-Z]\d{4})|([a-zA-Z]\d{3}[a-zA-Z])