2015-12-14 67 views
0

我需要幫助正則表達式模式。 它需要捕捉最後5位如果來自端的第五位是1-9, 如果第五數字形式的端是,那麼它需要捕獲最後4位數匹配正則表達式條件

樣品

  • ;135206701? //應該匹配6701
  • ;135216701? //應該匹配16701
  • ;135236701? //應該匹配36701
  • ;135208701? //應該匹配8701

這是我迄今爲止,但它只能正確地捕捉與5位(中間2個樣本)

(?<idnumber>(?!0)[0-9]{5})\? 

回答

4
(?:[1-9]|(?<=0))\d{4}(?=\?$) 

See it in action

的想法是項目:

  • 二者匹配1-9 digit[1-9])或(|)的(?<=0)存在)
  • 其次四位數\d{4}
  • 隨之而來的是問號的存在和該行的(?=\?$)
+0

不錯的答案。它可以是'(?= \ D * $)'來涵蓋所有的基礎。 – sln

1

您可以使用這一個:

([1-9][0-9]{0,4}|0)\? 

demo

+1

遞減匹配的想法從何而來?我不認爲它應該匹配3,2,1等等數字,這取決於最後一個零點的位置。 – ndn