早上好家伙
有没有一种在C#中使用正则表达式的好方法,以便在字符串变量中查找所有文件名及其路径?
例如,如果您有此字符串:
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上获得.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。