RegEx匹配文件名

时间:2016-03-09 18:29:51

标签: c# regex

我没有使用正则表达式的经验,虽然我应该花一些时间训练它们,但我需要一个简单的表达式。

我想在给定的字符串中找到P * .txt的匹配项(意思是以P开头的任何内容,后跟任何内容,以“.txt”结尾。

例如:

string myString = "P671221.txt";
Regex reg = new Regex("P*.txt"); //<--- what goes here?

if (reg.IsMatch(myString)
    {
        Console.WriteLine("Match!"));
    }

此示例不起作用,因为它将返回“.txt”或“x.txt”等匹配。我该怎么做?

6 个答案:

答案 0 :(得分:1)

myString.StartsWith("P") && myString.EndsWith(".txt")

编辑:删除我的正则表达式

答案 1 :(得分:1)

更新

字符串开头+( p )+ 任意字符 + .txt +字符串结尾
^(?i:p).*\.txt$

更精确的替代方案是:
字符串开始+( p )+ [特定字符] + .txt +字符串结束
(目前指定的是:&#34; a-z&#34;,&#34; 0-9&#34;,空格和&amp;下划线)
^(?i:p)(?i:[a-z0-9 _])*\.txt$

Live Demo

UpdatedSolution

  

原始解决方案

     

(包括引号,因为我忽略了引号是代码的一部分但没有   字符串)

     

前面的引号+( p )+ 任何字符 + .txt +以下引号

     

(?<=")(?i:p).*\.txt(?=")

     

Image

     

<强> Live Demo

答案 2 :(得分:0)

获取以P&amp; P开头的文件的最佳选择以.txt 结尾使用正则表达式

...
var property = (PropertyInfo) ((MemberExpression)member.Body).Member;
var propertyName = property.Name;
var value =  property.GetValue(obj, new object[0]);
...

答案 3 :(得分:0)

P[\d]+\.txt这会奏效。如果您有固定的位数,那么您可以像P[\d]{6}\.txt那样进行操作。只需将6替换为您想要的修正号码即可。

如果起始字母P和广告.txt之间的值可以是字母数字,请使用P[\w]+\.txt

答案 4 :(得分:0)

{{1}}

答案 5 :(得分:0)

这应符合您提出的要求。

c#

[PP]。*。(?: TXT)+ $