1

我想13572_BranchInformationReport_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;

哪个应该可以正常工作。

我错过了什么?

4

3 回答 3

2

你需要逃避 . 在正则表达式的中间,因为 . 匹配任何字符。

@"[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+\.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)"
于 2012-06-28T09:51:39.553 回答
1

试试下面的正则表达式:

[0-9]+_+[A-Za-z]+_+[0-9]+-+[0-9]+-+[0-9]+.+(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)(?=",")
于 2012-06-28T09:48:56.723 回答
1

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

\d{5}_\w*_\d{4}-\d{2}-\d{2}\.(acc|zip|app|xml|def|enr|exm|fpr|pnd|trm)

这将匹配任何内容:

  1. 以五位数开头
  2. 然后是下划线
  3. 然后任意数量的字母或数字
  4. 然后是下划线
  5. 然后是日期部分:四位数字,破折号,两位数字,破折号,最后两位。
  6. 然后是一段时间
  7. 最后是扩展。

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]
于 2012-06-28T09:52:46.803 回答