2011-07-08 43 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

相关问题