2016-11-28 60 views
3

假設我有一個一至三位數字的序列,它們之間可以有任意數量的空格,並且假設這些數字在我可以反向引用的組內。我怎麼會這樣做呢?這裏是我到目前爲止正則表達式組中的零或更多空格

([\d\s*]{1,3}) 

我只是有點困惑,我是如何有匹配高達三位數的模式,有那麼之間的零個或多個空格,並保持其內的組。

無論如何,謝謝。

+0

模式'[\ d \ s *]'匹配一個數字或一個空格或一個文字'*' – dawg

回答

2

你可以這樣做:

((?:\d\s*){1,3}) 

Demo


說明:

((?:\d\s*)){1,3} 
^ ^  define a non capturing group 
    ^   a single digit 
    ^  a space zero or more times 
^  ^  capture that group (digit and following space pattern) 
     ^ 1 to 3 times 

你也可以這樣做:

^(\d\s*\d?\s*\d?\s*) 
^    ^ capture group 
    ^     one digit 
    ^     zero or more spaces 
     ^    optional digit 
      ^   zero or more spaces 
      ^^  etcetera..... 

Demo

+0

你可以繼續這有用嗎? 它確實做了我所需要的,我只是想了解它是如何做到的,因爲我對正則表達式有點新鮮。另外,有沒有辦法做到這一點,而不使用冒號? – user2965071

+0

是的。 '(\ d)'是一個字符。 '\ b(w +)\ b'是一組字符。 – dawg

0

(\d{1,3}\s*)應該得到你想要的,我想。它定義了一個由1-3位數字組成的組,以及在下一組數字之前出現的任何空格。如果你不想在組中包括空間,你可以使用(\d{1,3})\s*

+0

'假設我有一到三位數字的序列,它們之間可以有任意數量的空格*' - 這隻能匹配1到3個數字,後面跟着任意數量的空格。之間沒有空格。 – dawg

+0

哎呀,我會學習下次閱讀,我的錯誤:) –