C# RegEx在此1/1/0001 12:00:00上午获取1/1/0001

C# RegEx在此1/1/0001 12:00:00上午获取1/1/0001,c#,regex,C#,Regex,输入为1/1/0001 12:00:00 AM。在正则表达式之后,我希望输出为1/1/0001 无法让正则表达式工作。任何想法> 忘记发布我失败的正则表达式 ([^\s]+) 顺便说一下,我正在寻找日期转换。字符串到字符串的转换。以上结果以三个字分隔 您可以从该字符串创建DateTime对象,在它之后-使用内置函数,如ToSortDate()在您的特定情况下,正则表达式是: ^\d{1,2}/\d{1,2}/\d{2,4} **这是通用正则表达式字符串。在C#/JavaScript等语言中,

输入为1/1/0001 12:00:00 AM。在正则表达式之后,我希望输出为1/1/0001

无法让正则表达式工作。任何想法>

忘记发布我失败的正则表达式

([^\s]+)

顺便说一下,我正在寻找日期转换。字符串到字符串的转换。以上结果以三个字分隔

您可以从该字符串创建DateTime对象,在它之后-使用内置函数,如ToSortDate()

在您的特定情况下,正则表达式是:

^\d{1,2}/\d{1,2}/\d{2,4}
**这是通用正则表达式字符串。在C#/JavaScript等语言中,必须避免反斜杠

这将与1/1/0001或01/01/0001等匹配。 但也将匹配56/56/9999!因此,在得到日期部分后,您应该进行健全性检查

但我更喜欢创建DateTime对象,并使用DateTime的成员获取日期部分

更新

如果使用([^\s]+),则会得到三个捕获组:

  • 1/1/0001
  • 12:00:00
  • 上午
因此,您必须提取第一个捕获组,通常使用索引1:

var datePart = matchObj.Groups[1].Value // Should be "1/1/0001"

首先将其转换为
DateTime
,然后使用
ToSortDateString()
返回字符串,或者删除空格字符后的所有内容。

这将是从输入中获取日期的正则表达式

"\\d{1}-\\d{1}-\\d{4}"

我倾向于解析为
DateTime
,然后解析为
ToString()
date…@Russ,那么为什么不简单地在空白处拆分字符串呢?有很多不同的方法(字符串拆分、正则表达式、通过
DateTime
解析等等)。但是,在只看到一个示例后,我们不了解确切的要求,我们不知道您如何使用结果,最重要的是,你自己还没有表现出任何努力来获得答案。你发布的正则表达式行甚至无法编译-你为什么要尝试这种模式?@Oded,因为复制/粘贴不好(:这与日期不匹配,如2012年12月31日或2012年12月31日。此外,输入不包含破折号,而是正斜杠。哦,谢谢你的更正,我没有正确阅读格式。这很有效。在第一个空格后,将所有单词放在字符串中的语法是什么。例如,bobs nice house。因此结果应该是“nice house”没有引用。这是你应该问的另一个问题;),但请花时间阅读这里的信息/示例:\s(*)这是asnwer。@托雷斯注意帕塔舒在这里的评论:
"\\d{1}-\\d{1}-\\d{4}"