我正在尝试选择结构数字为{3-5},空格为{1-4}的字符串(零件编号)
e.g. 1234 20 or 1234 20.00
问题是我的RegEx正在捕获字符串格式,例如1234 12.54或1234 12。 我不能选择1234 12,因为它是1234 12.54的子字符串。如果主字符串是1234 12.00,我会选择它。
这是我尝试过的RegEx
(\d\d\d\d?\d?)(\s+|\t)(\d{1,4})
(\d\d\d\d?\d?)(\s+|\t)(\d{1,4}(?!.[1-9])
(\d\d\d\d?\d?)(\s+|\t)(\d{1,4}(?=\.00)?
预期结果是选择1234 20或1234 20.00
不要选择任何字符串,例如1234 12.54甚至1234 12(子字符串1234 12.54)
答案 0 :(得分:0)
您可以匹配3-5位数字,并使用alternation匹配1-2位数字,后跟一个点,再匹配1-2倍零,或匹配1-4位数字。
最后,使用否定前瞻断言右边的字符不是非空格字符。
请注意,\s
也与\t
和换行符匹配。
\b\d{3,5}\s+(?:\d{1,2}\.0{1,2}|\d{1,4})(?!\S)
部分
\b
字边界\d{3,5}\s+
匹配3、4或5位数字,后跟1+个空格字符(?:
非捕获组
\d{1,2}\.0{1,2}
匹配1或2个数字,一个点和1或2乘以零的数字|
或\d{1,4}
匹配1、2、3或4位数字)
关闭非捕获组(?!\S)
负向前进,断言直接在右边的不是非空白车