从包含C#中的日期时间的字符串中获取数字

时间:2016-08-19 07:52:19

标签: c# regex datetime

我有这个字符串:

  

ÜmraniyeTapuMüdürlüğündeveÜmraniyeBelediyesiİmarMüdürlüğünde   20.08.2014 onay tarih ve254sayılımimariprojesinicelenmiştir。

我正在获取日期时间:像这样:

t = DateTime.Parse(Regex.Match(mimaristring, @"\d(\d+)[-.\/](\d+)[-.\/](\d+)").Value);

我试图像这样得到254:

num = Regex.Match(mimaristring, @"\d+").Value;

但是我得到20而不是254,我怎样才能跳过日期时间并得到254?

注意:有时,我有123/456之类的数字,而不只是254,我也需要获取它们。

1 个答案:

答案 0 :(得分:2)

要使整数不在点+数字内,您需要使用外观:

@"(?<!\d\.)\b\d+(?:/\d+)?\b(?!\.\d)"

请参阅this regex demo

模式说明

  • (?<!\d\.) - 如果当前位置之前有digit + .则不匹配
  • \b - 字边界
  • \d+(?:/\d+)? - 1+位数字后跟/和1+位数
  • \b - 尾随字边界
  • (?!\.\d) - 如果有一个点后跟一个数字,则匹配失败。

C# demo

var s = "Ümraniye Tapu Müdürlüğünde ve Ümraniye Belediyesi İmar Müdürlüğünde 20.08.2014 onay tarih ve 254 sayılı mimari projesi incelenmiştir.";
var pat = @"(?<!\d\.)\b\d+(?:/\d+)?\b(?!\.\d)";
Console.WriteLine(Regex.Match(s, pat).Value);