gpt4 book ai didi

c# - 正则表达式日期时间匹配

转载 作者:行者123 更新时间:2023-11-30 20:06:40 25 4
gpt4 key购买 nike

我正在使用 C#

string content = " 4 marco bob 53 AUSTRIA (Jan. 13, 2012) – McDonald Janruary 15, 2021 July 15, 2923   June 2 2343 7/25/23 08/22/3323";

这应该可以识别除“4 marco bob 53”之外的所有日期,这显然不是日期时间。但是,我的规则(下面)匹配它(4 marco bob 53),我不知道如何避免匹配那个(或类似的例子)。

我正在尝试为所有日期时间匹配上面的字符串。我写了 3 条规则来匹配一些常见的日期模式。

例如:

模式 f0:5/2/2012

模式 f2:1900 年 3 月 3 日或 1990 年 3 月 3 日或 3 月 3 日。 1990 等...

模式 f3:2021 年 1 月 4 日或 2021 年 1 月 4 日等...

 string f0 = "([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})";
string f1 = "([0-9]{1,2})\\s+([jJ][aA][nN].*?|[fF][eE][bB].*?|[mM][aA][rR].*?|[aA][pP][rR].*?|[mM][aA][yY].*?|[jJ][uU][nN].*?|[jJ][uU][lL].*?|[aA][uU][gG].*?|[sS][eE][pP].*?|[oO][cC][tT].*?|[nN][oO][vV[.*?|[dD][eE][cC].*?)\\s+([0-9]{2,4})";
string f2 = "([jJ][aA][nN].*?|[fF][eE][bB].*?|[mM][aA][rR].*?|[aA][pP][rR].*?|[mM][aA][yY].*?|[jJ][uU][nN].*?|[jJ][uU][lL].*?|[aA][uU][gG].*?|[sS][eE][pP].*?|[oO][cC][tT].*?|[nN][oO][vV[.*?|[dD][eE][cC].*?)\\s+([0-9]{1,2})[\\s,]+([0-9]{2,4})";

我是正则表达式的新手,所以我确定我在做一些愚蠢的事情(比如不使用不区分大小写的选项等),所以请告诉我如何改进它。

这是为了学习正则表达式,而不是学习如何使用库函数....

最佳答案

您的正则表达式匹配字符串 f1 的原因如下:

  • 4 因为 ([0-9]{1,2})\\s+
  • mar 因为 [mM][aA][rR]
  • co bob 因为 .*?
  • 53 因为 \\s+([0-9]{2,4}

删除您每个月后拥有的.*?。这意味着以非贪婪的方式匹配任何字符。所以它的作用是检查你的下一个条件是什么 \\s+([0-9]{2,4} 所以你匹配

关于c# - 正则表达式日期时间匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com