gpt4 book ai didi

c# - 复杂的正则表达式 : key-value pairs

转载 作者:太空狗 更新时间:2023-10-30 01:01:12 24 4
gpt4 key购买 nike

我无法为此类数据找出正确的正则表达式:

Phone-Work: 1111111111 Phone-Fax Work: 222222222 Phone-General: (333) 333-3333 Email-: email@email.com

期望的结果是:

Col1    Col2       Col3
Phone Work 1111111111
Phone Fax Work 222222222
Phone General (333) 333-3333
Email null email@email.com

key 由两部分组成(第二部分可能缺失):Phone-Work:, Email-:

key可以有4种:Phone-, Email-, User ID-, Web address-

我无法弄清楚如何创建一个正则表达式,它将采用 value 部分并在新的 key 之前停止。

这是我正在尝试使用一些数据:

https://regex101.com/r/weEc3A/1

最佳答案

你可以使用像这样的解决方案

(?si)(Phone|Email|User ID|Web address)-([^:]*):\s*((?:(?!(?:Phone|Email|User ID|Web address)-).)*)

相当于

(?si)(Phone|Email|User ID|Web address)-([^:]*):\s*(.*?)(?=(?:Phone|Email|User ID|Web address)-|$)

参见 regex demo

详细信息:

  • (Phone|Email|User ID|Web address)- - 匹配可能的起始值,然后是 - 将其捕获到第 1 组
  • ([^:]*) - 将 : 以外的零个或多个字符捕获到第 2 组
  • :\s* - 一个冒号后跟零个或多个空格
  • ((?:(?!(?:Phone|Email|User ID|Web address)-).)*) - 第 3 组捕获任何字符 (.) 未启动与 (?:Phone|Email|User ID|Web address)- 模式匹配的序列。

由于使用了 (?s) 修饰符,因此 . 也匹配换行符。在 C# 中,您可以使用 RegexOptions.Singleline 标志代替此内联选项。 (?i)RegexOptions.IgnoreCase 标志的内联等效项。组合时,内联修饰符可以写在一对括号内:(?si)

关于c# - 复杂的正则表达式 : key-value pairs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40742637/

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