使用String.Format创建正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用String.Format创建正则表达式相关的知识,希望对你有一定的参考价值。
基本上我有一个插值字符串:Log_{0}.txt
和{0}
在不同的过程中被一个整数替换。所以结果可能是像Log_123.txt
或Log_53623432.txt
。
我正在尝试使用string.Format()
并将{0}
替换为检查数字的正则表达式。最终我希望能够将这些数字拉出来。
我在这样的事情上尝试过几种不同的变化,但我没有运气:
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^d$"));
另外,这是检查格式的代码:
var fileNameFormat = new Regex(string.Format("Log_{0}.txt", @"^d+$"));
var existingFiles = Directory.GetFiles("c:\projects\something");
foreach(var file in existingFiles)
{
var fileName = Path.GetFileName(file);
if(fileNameFormat.Match(fileName).Success)
{
// do something here
}
}
答案
你的正则表达式存在问题。 ^
断言线的起点和$
线的终点。只需用@"d+"
替换它,它应该工作。
您可以选择使用new Regex(string.Format("^Log_{0}.txt$", @"d+"));
来确保不匹配asdffff_Log_13255.txt.temp等文件。
另一答案
你忘了把加号+
量词放?
+量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
var stringFormat = new Regex(string.Format("Log_{0}.txt", @"^d+$"));
以上是关于使用String.Format创建正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
融职教育Web前端学习 第3章 JavaScript基础教程10 正则表达式
15Java常用类(数组工具类Arrays)基本类型包装类(Integer类)正则表达式String的split(String regex)和replaceAll(String regex, (代码片
在 Xcode11 Beta 4 中将 String(format: , args) 与 SwiftUI 一起使用时出错