C# 如何使用';正则表达式';提取文件名?

C# 如何使用';正则表达式';提取文件名?,c#,asp.net,regex,C#,Asp.net,Regex,我想从以下文本中提取文件名13572\u BranchInformationReport\u 2012-06-28.zip- 1:30“,/icons/def13572_BranchInformationReport_2012-06-28.zip”,“13572_BranchInformationReport_2012-06-28.zip”,0,“184296”,“6月28日 我使用的正则表达式代码是: var fileNames = from Match m in Regex.Matches(

我想从以下文本中提取文件名
13572\u BranchInformationReport\u 2012-06-28.zip
-

1:30“,/icons/def13572_BranchInformationReport_2012-06-28.zip”,“13572_BranchInformationReport_2012-06-28.zip”,0,“184296”,“6月28日

我使用的正则表达式代码是:

var fileNames = from Match m in Regex.Matches(pageSource, @"[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)")
                select m.Value;
这应该行得通


我缺少什么?

尝试以下正则表达式:

[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)(?=",")

请尝试以下正则表达式:

[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)(?=",")

你需要逃离这个世界。在正则表达式的中间,因为匹配任何字符

@"[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+\.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)"

你需要逃离这个世界。在正则表达式的中间,因为匹配任何字符

@"[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+\.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)"

您可以尝试以下正则表达式:

\d{5}_\w*_\d{4}-\d{2}-\d{2}\.(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)
这将匹配以下任何内容:

  • 以五位数开始
  • 然后是下划线
  • 然后是任意数量的字母或数字
  • 然后是下划线
  • 然后是日期部分:四位数,破折号,两位数,破折号,最后两位数
  • 然后是一段时间
  • 最后是扩展
  • PowerShell示例:

    $text = '1:30","/icons/def13572_BranchInformationReport_2012-06-28.zip","13572_BranchInformationReport_2012-06-28.zip",0,"184296","Jun 28'
    
    $regex = '\d{5}_\w*_\d{4}-\d{2}-\d{2}\.(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)'
    
    $text -match $regex
    
    $matches[0]
    

    您可以尝试以下正则表达式:

    \d{5}_\w*_\d{4}-\d{2}-\d{2}\.(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)
    
    这将匹配以下任何内容:

  • 以五位数开始
  • 然后是下划线
  • 然后是任意数量的字母或数字
  • 然后是下划线
  • 然后是日期部分:四位数,破折号,两位数,破折号,最后两位数
  • 然后是一段时间
  • 最后是扩展
  • PowerShell示例:

    $text = '1:30","/icons/def13572_BranchInformationReport_2012-06-28.zip","13572_BranchInformationReport_2012-06-28.zip",0,"184296","Jun 28'
    
    $regex = '\d{5}_\w*_\d{4}-\d{2}-\d{2}\.(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)'
    
    $text -match $regex
    
    $matches[0]
    

    愚蠢的问题,但你有什么似乎是CSV数据那里。你不能改用CSV库吗?@RB的意思是他的问题可能很愚蠢,而不是akhil的问题很愚蠢。这在英语中是一个常见的自嘲短语。@我会理解事实的,但我认为没有任何问题是愚蠢的。可能是组织不当,但这并不是一个愚蠢的问题。愚蠢的问题,但你有什么似乎是CSV数据。你不能改用CSV库吗?@RB的意思是他的问题可能很愚蠢,而不是akhil的问题很愚蠢。这在英语中是一个常见的自嘲短语。@我会理解事实的,但我认为没有任何问题是愚蠢的。可能是因为它组织得不好,但这并不是一个愚蠢的问题。是的,但为了与角色完全匹配。你必须使用\。在你的正则表达式中。你必须转义这个点来精确匹配它,否则正则表达式会假设你的意思是,在你有这个点的时候,任何字符都可以。是的,但是为了完全匹配角色。你必须使用\。在你的正则表达式中。你必须转义这个点来精确匹配它,否则正则表达式会假设你的意思是,在你有这个点的时候,任何字符都可以。您可以在C#代码中使用该正则表达式。我刚刚发布了PowerShell以证明它是有效的;-)您可以在C#代码中使用该正则表达式。我刚刚发布了PowerShell以证明它是有效的;-)