正则表达式删除除日期之外的所有内容?

时间:2013-07-18 14:44:13

标签: c# regex string

我有一个名为

的文件
SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE 06-24-2013.dwg 

我正在寻找一个正则表达式,它将删除除日期06-24-2013之外的所有内容。

下面是我的代码,它与日期本身相匹配,但我不确定如何撤消它。

[0-9]{2}-[0-9]{2}-[0-9]{4}

5 个答案:

答案 0 :(得分:9)

如果只保留匹配的文本,结果将被忽略

var match = Regex.Match(yourString, "[0-9]{2}-[0-9]{2}-[0-9]{4}");
 string result = "";
if(match.Success)
 result = match.Value;

结果会给你这个06-24-2013。这意味着休息被忽略。

答案 1 :(得分:3)

一种方法是使用前瞻和后瞻性锚点:这个表达式

"SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE 06-24-2013.dwg"
.replaceAll("(?<=[0-9]{2}-[0-9]{2}-[0-9]{4}).*$|.*(?=[0-9]{2}-[0-9]{2}-[0-9]{4})", "")

返回06-24-2013demo

我把你的表达式用于日期,并将其添加到一个构造中,该构造匹配两端的表达式,但不包括两端的表达式。当此构造用于replaceAll的调用时,双方最终都会被替换。我使用空字符串作为替代品,因此正则表达式两边的所有字符最终都会被删除。

答案 2 :(得分:1)

已经回答,但自从我开始打字:

string myString = "SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE 06-24-2013.dwg";

string myNewDateString = Regex.Replace(myString, @".*([0-9]{2}-[0-9]{2}-[0-9]{4}).*", "$1");

Console.WriteLine(myNewString); // 06-24-2013

答案 3 :(得分:0)

假设您已在名为dateStr的变量中包含日期:

string newName = dateStr + ".dwg";

或者您是否尝试仅删除日期,例如得到结果SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE.dwg

答案 4 :(得分:0)

如果要提取它,为什么要还原它: - )

var content = "SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE 06-24-2013.dwg";

var result  = content.match(/[0-9]{2}-[0-9]{2}-[0-9]{4}/g);
if (result)
    console.log(result[0]);

这将为您返回06-24-2013。