English 中文(简体)
定期表达,以取代运行时间的模式(C#3.0)
原标题:Regular Expression to replace a pattern at runtime(C#3.0)
  • 时间:2010-05-02 19:16:57
  •  标签:
  • regex
  • c#-3.0

我有要求。

我有几卷档案,其中某些档案名称像这样说。

**EUDataFiles20100503.txt, MigrateFiles20101006.txt.**

这些基本上都是我需要处理的文件。

现在,我有一把档案称为档案类型的文件。

EUDataFilesYYYMMDD, MigrateFiles YYYYYMMDD

基本的想法是,用户能够根据所述模式整理档案格式,我需要寻找文件夹中的档案。

i.e. 在运行时间,YYYMMDD将被年月和日值<>所取代。 日期不在此限(但不包括时间印章;只有日期)。

并且欧盟数据交换器或MigrateFiles(这些名称是固定的)

i.e. 如果文件夹有欧盟文件名称,即2010年12月5日,第04号,那么我就应当忽视这一档案,因为它不是欧盟文件数据库,20100504.txt(请注意,名字是复数——档案,而不是系统将忽略档案的档案)。

同样,如果作为欧盟数据交换所给出的模式 YYYYMMDD,如果档案存在欧盟数据集 那么,YYYYYYYDDMM也应该忽视这一系统。

我如何解决这一问题? 是否可使用常规表述(在运行时采用模式)?

如果是这样,任何人在帮助我的时候会做得好吗?

我正在使用C#3.0和Dotnet框架3.5。

增 编

最佳回答

你可以从你的基本档案名称加上(视具体情况而定)分册中 construct。

分管

 yyyy = @"d{4}"

(除非你想要限制某一年的范围)

 mm = @"(1[0-2]|0[1-9])"
 dd = @"(3[01]|[12][0-9]|0[1-9])"

1. 通过在正确顺序上添加:

 re = @"AEUDataFiles" + yyyy + mm + dd + @".txt"

然后,你可以检查一下你发现的档案名称是否与reg相符:

foundMatch = Regex.IsMatch(subjectString, re);

当然,这并没有对正确日期进行验证(20100231将会通过),但这很可能不是本案的问题。

问题回答

暂无回答




相关问题
Uncommon regular expressions [closed]

Recently I discovered two amazing regular expression features: ?: and ?!. I was curious of other neat regex features. So maybe you would like to share some tricky regular expressions.

regex to trap img tag, both versions

I need to remove image tags from text, so both versions of the tag: <img src="" ... ></img> <img src="" ... />

C++, Boost regex, replace value function of matched value?

Specifically, I have an array of strings called val, and want to replace all instances of "%{n}%" in the input with val[n]. More generally, I want the replace value to be a function of the match ...

PowerShell -match operator and multiple groups

I have the following log entry that I am processing in PowerShell I m trying to extract all the activity names and durations using the -match operator but I am only getting one match group back. I m ...

Is it possible to negate a regular expression search?

I m building a lexical analysis engine in c#. For the most part it is done and works quite well. One of the features of my lexer is that it allows any user to input their own regular expressions. This ...

regex for four-digit numbers (or "default")

I need a regex for four-digit numbers separated by comma ("default" can also be a value). Examples: 6755 3452,8767,9865,8766,3454 7678,9876 1234,9867,6876,9865 default Note: "default" ...