gpt4 book ai didi

c# - 一种使用 RegEx 在字符串中查找一组文件名路径的方法

转载 作者:太空狗 更新时间:2023-10-29 21:25:09 25 4
gpt4 key购买 nike

大家早上好

有没有一种在 C# 中使用正则表达式来查找 string 变量中的所有文件名及其路径的好方法?

例如,如果你有这个字符串:

string s = @"Hello John

these are the files you have to send us today: <file>C:\Development\Projects 2010\Accounting\file20101130.csv</file>, <file>C:\Development\Projects 2010\Accounting\orders20101130.docx</file>

also we would like you to send <file>C:\Development\Projects 2010\Accounting\customersupdated.xls</file>

thank you";

结果是:

C:\Development\Projects 2010\Accounting\file20101130.csv
C:\Development\Projects 2010\Accounting\orders20101130.docx
C:\Development\Projects 2010\Accounting\customersupdated.xls

已编辑:考虑到告诉@Jim 的内容,我编辑了添加标签的字符串,以便更容易地从字符串中提取所需的文件名!

最佳答案

这是我想出的东西:

using System;
using System.Text.RegularExpressions;

public class Test
{

public static void Main()
{
string s = @"Hello John these are the files you have to send us today:
C:\projects\orders20101130.docx also we would like you to send
C:\some\file.txt, C:\someother.file and d:\some file\with spaces.ext

Thank you";

Extract(s);

}

private static readonly Regex rx = new Regex
(@"[a-z]:\\(?:[^\\:]+\\)*((?:[^:\\]+)\.\w+)", RegexOptions.IgnoreCase);

static void Extract(string text)
{
MatchCollection matches = rx.Matches(text);

foreach (Match match in matches)
{
Console.WriteLine("'{0}'", match.Value);
}
}

}

产生:(参见ideone)

'C:\projects\orders20101130.docx', file: 'orders20101130.docx'
'C:\some\file.txt', file: 'file.txt'
'C:\someother.file', file: 'someother.file'
'd:\some file\with spaces.ext', file: 'with spaces.ext'

正则表达式不是非常健壮(它确实做了一些假设)但它也适用于您的示例。


如果您使用 <file>,这里是程序的一个版本标签。更改正则表达式和 Extract到:

private static readonly Regex rx = new Regex
(@"<file>(.+?)</file>", RegexOptions.IgnoreCase);

static void Extract(string text)
{
MatchCollection matches = rx.Matches(text);

foreach (Match match in matches)
{
Console.WriteLine("'{0}'", match.Groups[1]);
}
}

也可在 ideone 上获得.

关于c# - 一种使用 RegEx 在字符串中查找一组文件名路径的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com