2013-01-02 50 views
0

我試圖驗證類似這樣的表述:是否可以爲正則表達式計算字符數?

SEN 3 00000001 HT 12.60 39.50 

使用模式SEN \\d{1} \\w{8} \\w{1,2} ([-+]?[0-9]*\\.?[0-9]*){1,2}。該模式主要起作用。返回的組是

SEN 3 00000001 HT 12.60 

39.50丟失。我認爲原因是因爲我的模式中的最後一個數量條件({1,2})只滿足12.60

有沒有一種方法可以根據字符數量\\w{1,2}使用lookahead來設置滿足([-+]?[0-9]*\\.?[0-9]*)所需的數量?

+0

替換'\\ d {1}'只用'\\ D'。 –

回答

4

你幾乎得到它:)

您所做的離開是在端重複組的空間外的錯誤。由於有一個12.60和39.50之間的空間,除了12.60之外不會有任何匹配。量化當

  • 替換爲()(:)因爲它會被覆蓋,除非是由設計
  • 試試這個正則表達式來代替:

    SEN \\d{1} \\w{8} \\w{1,2}([-+]?[0-9]*\\.?[0-9]*){1,2} 
    

    一些優化?

  • 用\ d替換\ d {1},它們是一樣的。

演示+解釋:http://regex101.com/r/jQ7sP2

+0

太棒了,謝謝你的收穫!我懷疑我是否會發現這一點;它非常微妙。 – AedonEtLIRA

相關問題