使用String.Format创建正则表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用String.Format创建正则表达式相关的知识,希望对你有一定的参考价值。

基本上我有一个插值字符串:Log_{0}.txt{0}在不同的过程中被一个整数替换。所以结果可能是像Log_123.txtLog_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, (代码片

C# 正则表达式转义和替换

在 Xcode11 Beta 4 中将 String(format: , args) 与 SwiftUI 一起使用时出错

python:如何使用正则表达式创建此代码?