使用C#查找字符串中的特定模式

时间:2011-03-02 20:30:04

标签: c# regex string

我正在尝试使用C#查找并删除字符串中的特定模式。

模式是星号,后跟任意数量的数字,后跟.txt

示例字符串:

  1. 测试* 123.txt
  2. TEST2 *的1.txt
  3. 测试* 1234.txt3
  4. TEST4 * 12.txt123
  5. 鉴于这些例子,期望的结果将是:

    1. test(“* 123.txt”已删除)
    2. test2(“* 1.txt”已删除)
    3. test3(“* 1234.txt”已删除)
    4. test4123(“* 12.txt”已删除)
    5. 如何实现这一目标?

3 个答案:

答案 0 :(得分:8)

string pattern = @"\*\d*\.txt";
Regex rgx = new Regex(pattern)
input = rgx.Replace(input, "");

答案 1 :(得分:7)

如果构建正则表达式并将其匹配替换为空字符串,则可以有效地删除该模式。以下是您的模式所需要的内容:

  1. 星号在正则表达式中具有特殊含义(前一项的零个或多个),因此您必须使用反斜杠(\*)对其进行转义。

    < / LI>
  2. 您可以将数字与数字字符类(\d)匹配,也可以与包含所有数字([0-9])的显式类匹配。由于文化背景,它们之间存在差异:\d可以匹配东阿拉伯数字(0.1.2.3.4.5.6.7.8.9),而[0-9]将仅匹配印度 - 阿拉伯数字(0,1,2,3,4,5,6,7,8,9)。

  3. 您可以使用+量词来匹配上一项中的一项或多项:\d+将匹配一个或多个数字。

  4. 点是另一个特殊字符(它匹配除换行符之外的任何单个字符)。它还需要转义(\.)。

  5. 您可以将没有特殊字符的文字与文字本身匹配:txt完全匹配txt

  6. 把所有东西放在一起我们得到:

    string purged = Regex.Replace(input, @"\*[0-9]+\.txt", "");
    

答案 2 :(得分:0)

我会用RegEx来解决这个问题。我建议使用在线编辑器来帮助您完成此操作。它叫做Rubular,可以在http://www.rubular.com/

找到