gpt4 book ai didi

C# Regex.Replace,冒号作为分隔符,忽略日期时间格式

转载 作者:太空狗 更新时间:2023-10-29 21:51:52 30 4
gpt4 key购买 nike

我有以下字符串:

[{names: {en: "US 30 - 5 Minute Level", es: "US 30 - 5 Minute Level"}, status: "A", displayed: "Y", start_time: "2011-05-20 00:00:00", start_time_xls: {en: "20th of May 2011  00:00 am", es: "20 May 2011 00:00 am"}, suspend_at: "2011-05-20 16:53:48", is_off: "Y", score_home: "", score_away: "", bids_status: "", period_id: "", curr_period_start_time: "", score_extra_info: "", settled: "N", ev_id: 2688484, ev_type_id: 10745, num_mkts: 5, venues: {en: "", es: ""}, disporder: 2040, ev_stream_available: false}]

我需要用引号将所有变量名称括起来,以便将其验证为 JSON。我正在执行以下操作,但它也在拆分日期。 .

Regex.Replace(input, @"(\w+:)", "\"$0\":", RegexOptions.None);

Regex.Replace 后的输出:

[{"names" {"en" "US 30 - 5 Minute Level", "es" "US 30 - 5 Minute Level"}, "status" "A", "displayed" "Y", "start_time" "2011-05-20 "00""00"00", "start_time_xls" {"en" "20th of May 2011 "00"00 am", "es" "20 May 2011 "00"00 am"}, "suspend_at" "2011-05-20 "16""53"48", "is_off" "Y", "score_home" "", "score_away" "", "bids_status" "", "period_id" "", "curr_period_start_time" "", "score_extra_info" "", "settled" "N", "ev_id" 2688484, "ev_type_id" 10745, "num_mkts" 5, "venues" {"en" "", "es" ""}, "disporder" 2040, "ev_stream_available" false}]

我怎样才能改变它来忽略它们?另外,有什么好的基于 Web 的资源可以一劳永逸地深入了解正则表达式?!

谢谢。

最佳答案

试试这个模式:

string pattern = @"\b([A-Za-z_]+)\b(?=:)";
string replace = "\"$0\"";
string result = Regex.Replace(input, pattern, replace);
Console.WriteLine(result);

[A-Za-z_]+ 匹配任何大小写字母和下划线字符一次或多次。如果所有 JSON 名称都不包含数字,则此方法工作正常。 \b 元字符匹配单词边界,(?=:) 匹配 - 但不捕获 - 冒号。您会注意到 replace 模式不包含冒号。

类似地,此模式可以工作:@"\b([^\d\s]+)\b(?=:)" 因为它匹配所有非数字或空格的内容.

学习正则表达式需要大量练习才能理解概念、尝试示例并了解其工作原理。我建议获取一个工具,让您可以在一些教程中试用它们。入门指南:

  • The 30 Minute Regex Tutorial
  • Regular Expressions Info - 很好的资源,解释了不同的概念并强调了不同语言的正则表达式引擎之间的差异。
  • Expresso - 这是一个免费工具,您只需要提供一个电子邮件来注册它。它还包括我上面链接的 30 分钟正则表达式教程。

这应该让你开始。如果您真的想更深入地研究,那么可以阅读两本好书:

关于C# Regex.Replace,冒号作为分隔符,忽略日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6074969/

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