2011-07-08 73 views
1

我經常處理用戶提交到網站的列表。列表通常是這樣的:從編號列表中刪除數字和分隔符

  1. 項目
  2. 項目

的模式通常是一個數字,然後是分隔符(也可以是「 - 」或「\」或或任何「」其他典型的分離器)。數字和分隔符之間以及分隔符和列表項之間可以有一個或多個空格。有時在列表項目前沒有數字,在這種情況下不需要做任何事情。有時有一個數字,但沒有分隔符。

有沒有辦法使用正則表達式將數字和/或分隔符一起取出?

+0

你在分析什麼語言? JavaScript的? PHP?紅寶石? C#?等 –

+0

我正在使用C#做解析。 – Thomas

回答

4

這將匹配號碼和分離器和一個行的開頭:

^\d+\s*[-\\.)]?\s+ 

使用它與空字符串來代替它(取決於你所使用的語言)。

您可能需要爲角色類添加更多字符,以匹配可能的分隔符。

佳源學習正則表達式:http://www.regular-expressions.info/

+0

我想你想要'\ d +'。其他一切都是可選的,但如果你不需要至少一位數字,那有什麼意義呢? –

+0

@Alan:嗯,我帶*有時在列表項前面沒有數字*太字面我猜...;)謝謝,更新。 –

+1

請繼續閱讀:「...在這種情況下,不需要做任何事情。」換句話說,如果沒有至少一個數字後面跟着至少一個空格(我之前沒有提到),那麼正則表達式應該不匹配。 –

0
(?=\d*\s*[-\\.]?\s*)([a-zA-Z\s*]+)

你可以在這裏查看答案:RegExr

 
Explanation: 

\d*- matches 0 or more occurrence digits 
\s* - matches 0 or more occurrence whitespace after the number 
[-\\.]? - matches 0 or 1 occurrence of '-' '.' '\' 
\s* - matches 0 or more occurrence whitespace after that 
([a-zA-Z\s*]+) -matches any characters after that (items you need to extract) 
+0

謝謝。我嘗試過,但它看起來像捕獲分隔符後的每個單詞。如果我有:1.項目二,它將分別捕獲「項目」,「一個」,「兩個」。我正在尋找一種方法來擺脫數字和/或分隔符,並保持項目的其餘部分爲一體。 – Thomas

+0

更新了我的答案。這將起作用,只需在其中添加'\ s *':'(?= \ d * \ s * [ - \\。]?\ s *)([a-zA-Z \ s *] +)'。你可以在這裏查看[RegExr](http://regexr.com?2u6ab) – Maggie

相關問題