【问题标题】:Selecting Files from folder using Regular Expression c#使用正则表达式 c# 从文件夹中选择文件
【发布时间】:2015-07-24 10:59:37
【问题描述】:

我有一个案例,我想根据模式选择一组文件。所以我需要一个遵循所有这些场景的正则表达式。 应包含“价格”一词

Price_{0}_Extract_{1}.xml  

我想处理以下场景

Price_ABC_Extract_20150723081513.xml 
Price_DEF_Extract_20150823081513.xml 
ABC_Price_DEF_Extract_20150823081513.xml
FGH_Price_DEF_Extract_20150823081513_1.xml

使用一个正则表达式我想选择上面的文件

{1} 的格式应始终为"yyyyMMddHHmmss" 它应始终包含“价格”一词

任何人都可以帮助解决这个问题。目前我正在使用一个不处理所有这些情况的正则表达式(即Price_[yyyyMMddHHmmss].xml

我需要一个适用于 c# 的解决方案

【问题讨论】:

    标签: c# .net regex regex-negation


    【解决方案1】:

    您可以使用以下正则表达式来检查文件名匹配:

    ^\w*?Price_\w*?Extract_\d{14}(?:_\d+?)??\.xml$
    Demo here.

    但是它不能验证日期是否真的有效,只是它占用了正确的位数。

    【讨论】:

    • 日期应始终采用 yyyyMMddHHmmss 格式。我们如何也包括此条件 [yyyyMMddHHmmss] ???
    • @vmb 正则表达式不知道年、月和日。您可以做的最好的事情是对它们进行数字限制,以确保它们不超过某个范围(例如,在一个月的 1-31 天之外)。
    【解决方案2】:

    在 JB 的回答中添加数字限制:

    \w*?价格_\w*?\d{4}[0-1]\d[0-3]\d[0-2]\d[0-6]\d[0-6] \d(?:_\d+?)??.xml

    【讨论】:

    • 但我想在正则表达式中保留 [yyyyMMddHHmmss]
    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多