我正在尝试使用C#查找并删除字符串中的特定模式。
模式是星号,后跟任意数量的数字,后跟.txt
示例字符串:
鉴于这些例子,期望的结果将是:
如何实现这一目标?
答案 0 :(得分:8)
string pattern = @"\*\d*\.txt";
Regex rgx = new Regex(pattern)
input = rgx.Replace(input, "");
答案 1 :(得分:7)
如果构建正则表达式并将其匹配替换为空字符串,则可以有效地删除该模式。以下是您的模式所需要的内容:
星号在正则表达式中具有特殊含义(前一项的零个或多个),因此您必须使用反斜杠(\*
)对其进行转义。
您可以将数字与数字字符类(\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)。
您可以使用+
量词来匹配上一项中的一项或多项:\d+
将匹配一个或多个数字。
点是另一个特殊字符(它匹配除换行符之外的任何单个字符)。它还需要转义(\.
)。
您可以将没有特殊字符的文字与文字本身匹配:txt
完全匹配txt
。
把所有东西放在一起我们得到:
string purged = Regex.Replace(input, @"\*[0-9]+\.txt", "");
答案 2 :(得分:0)
我会用RegEx来解决这个问题。我建议使用在线编辑器来帮助您完成此操作。它叫做Rubular,可以在http://www.rubular.com/
找到