我有一个文件名为
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]);
这将为您返回 06-24-2013。