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

本文关键字:删除 日期 正则表达式 | 更新日期: 2023-09-27 18:23:58

我有一个名为的文件

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}

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

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

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。这意味着休息被忽略。

实现这一点的一种方法是使用先行和后向锚点:这个表达式

"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-2013(演示)

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

已经有人回答了,但自从我开始键入:

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

假设您已经在一个名为dateStr:的变量中有日期

string newName = dateStr + ".dwg";

还是您试图只删除日期,例如获取结果SMITH FAMILY TRUST S09 T90N R42W 30011498002 EXHIBIT USACE.dwg

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

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]);

这将于2013年6月24日为您返回。