【问题标题】:Removing numbers and separators from a numbered list从编号列表中删除数字和分隔符
【发布时间】:2011-07-08 17:29:11
【问题描述】:

我经常处理用户提交到网站的列表。列表通常如下所示:

  1. 项目
  2. 项目

模式通常是一个数字,后跟分隔符(可以是“-”或“\”或“.”或任何其他典型的分隔符)。数字和分隔符之间以及分隔符和列表项之间可以有一个或多个空格。有时列表项前面没有数字,在这种情况下不需要做任何事情。有时有数字但没有分隔符。

有没有办法使用正则表达式同时取出数字和/或分隔符?

【问题讨论】:

  • 你在解析什么语言? Javascript? php?红宝石? C#?等等
  • 我正在使用 C# 进行解析。

标签: regex


【解决方案1】:

这将匹配数字和分隔符以及行首:

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

用它来替换它为一个空字符串(取决于你使用的语言)。

您可能需要向字符类添加更多字符,以匹配可能的分隔符。

学习正则表达式的好资源:http://www.regular-expressions.info/

【讨论】:

  • 我想你想要\d+。其他一切都必须是可选的,但如果您不需要至少一位数字,那又有什么意义呢?
  • @Alan: 啊,我把有时列表项前面没有数字我猜太字面意思了......;)谢谢,更新了。
  • 继续阅读:“……在这种情况下,什么都不需要做。”换句话说,如果没有至少一个数字后跟至少一个空格(我之前说错了),则正则表达式应该无法匹配。
  • @Alan:哦,必须删除?...再次感谢:)
【解决方案2】:
(?=\d*\s*[-\\.]?\s*)([a-zA-Z\s*]+)

您可以在这里查看答案:RegExr

解释: \d*- 匹配 0 个或多个出现数字 \s* - 匹配数字后出现的 0 个或多个空格 [-\\.]? - 匹配 0 或 1 次出现的 '-' '。 '\' \s* - 在此之后匹配 0 个或多个出现的空格 ([a-zA-Z\s*]+) - 匹配之后的任何字符(您需要提取的项目)

【讨论】:

  • 谢谢。我试过这个,但它看起来像是在分隔符之后捕获了每个单词。如果我有: 1. 项目一二,它将分别捕获“项目”、“一”、“二”。我正在寻找一种方法来摆脱数字和/或分隔符并将项目的其余部分保留为一个。
  • 更新了我的答案。这将起作用,只需将 \s* 添加到它:(?=\d*\s*[-\\.]?\s*)([a-zA-Z\s*]+) 。你可以在这里查看RegExr
猜你喜欢
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 2020-08-21
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多