2014-02-23 89 views
2

我想匹配單詞和數字並刪除所有特殊字符,除非它是數字之間的時間段。正則表達式:用十進制數字和數字匹配

具體而言,我想有不同的,而不是分裂49.99到49和99的\W+的效果,我想保持它作爲49.99

比如我想

「米莉的數學房子3-7(贏/ mac)現在只有49.99。「

拆分成

['millie', 'math', 'house', '3', '7', 'win', 'mac', 'now', '49.99', 'only']

但是現在,僅僅使用\W+,我得到

['millie', 'math', 'house', '3', '7', 'win', 'mac', 'now', '49', '99', 'only']

我該如何保留中間有句點的單詞,但除掉特殊字符呢?

謝謝!

+0

在這裏很晚才發佈廣泛的答案。只需匹配並使用像這樣的模式'\ d + \。\ d + | [^ \ W \ d] + | \ d +'。請參閱[demo](http://regex101.com/r/sZ3tV2)。 – HamZa

回答

1

請嘗試以下

[^\w.]+ 

相反匹配所有非單詞字符,它匹配的一切,是不是一個單詞字符/期。

+0

這似乎適用於我。非常感謝!! – jmoney

0

你應該試着加點字符,例如

[\W.]+ 
+0

有沒有必要逃避一個字符類中的點。請參閱[demo](http://regex101.com/r/xH0fY3) – HamZa

1

如果你知道一個事實,就會出現在中間的小數點每一次,那麼這是可行的:

(\ 。d + \ d +)

您可以檢查正則表達式在這裏:

regexpal.com

相關問題