2013-11-25 48 views
0

之前,請考慮以下字符串:正則表達式匹配的複數詞用數字

20 mins

我想創建的PHP能夠找到使用preg_match()這樣的字符串的正則表達式。表達式應該具有足夠的動態性,以便能夠識別前面數字值的非複數和更多選項。例如,下面的例子也應該匹配:

  • 1 min
  • 0.5 mins
  • 999 mins

我已經用下面的嘗試,但它不執行:

(^|\b)[0-99999*]\/b\min[s]?\b 
+0

如果我可能會問,這些是什麼:'(^ | \ B)'? '[0-99999 *]'? '\/B' ?? '\ M'?編寫每個部分可能更容易,並查看它是否工作。 – Kobi

回答

3

你可以使用這種模式:

\b[0-9]+(?:\.[0-9]+)?\smins?\b 

注意:您可以通過\s+

注2允許更換\s的數量和「分鐘」之間的多個空格:一個字符類與字符的包,寫[0-99999*]有沒有意義。 See the manual

+0

謝謝,這個伎倆。 – BenM

0

這種模式:

\b\d+(?:\.\d+)? mins?\b 

應該適應所要包括這些情形:

•1 min 
•0.5 mins 
•999 mins 
•0.51213123 mins 
•2352352.51213123 mins