我试图用C#查找并删除字符串中的特定模式.
模式是星号,后跟任意数量的数字,后跟.txt
示例字符串:
鉴于这些例子,期望的结果将是:
如何实现这一目标?
string pattern = @"\*\d*\.txt";
Regex rgx = new Regex(pattern)
input = rgx.Replace(input, "");
Run Code Online (Sandbox Code Playgroud)
如果构建正则表达式并将其匹配替换为空字符串,则可以有效地删除该模式.这是您的模式所需要的:
星号在正则表达式中具有特殊含义(前一项的零个或多个),因此您必须使用反斜杠(\*)将其转义.
您可以将数字与数字字符类(\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", "");
Run Code Online (Sandbox Code Playgroud)