gpt4 book ai didi

c# - 正则表达式从用户定义的 id 中提取序号

转载 作者:行者123 更新时间:2023-11-30 23:30:34 29 4
gpt4 key购买 nike

我正在尝试从可以设置为多种格式的字符串 ID 中提取序号。该字符串由 4 个变量组成:

  • 公司代码/char(3)
  • 国家/字符(2)
  • 年份/字符(4)
  • 序列 nr/char(5),左边用零填充

格式是可配置的,这意味着我们可以拥有像这样的 ID:

US-XXX-201600001

2016-XXX-00001-美国

00001-XXX-美国/2016

... 或任何其他定义的格式,但始终存在这 4 个变量。

问题是如何使用正则表达式(左边没有零)从我得到的任何格式中获取序列号,但考虑到年份和序列号可以像“201600001”一样放在一起。我只需要得到“1”

编辑:由于答案,我想澄清一下格式,其中只有一些可能的例子。这完全可以由用户定制。没有预定义的格式。这里唯一不变的是 4 个变量。我知道用正则表达式解决这个问题可能很复杂,我真的很感激你的所有回答。我将检查您提供的表达式以检查哪个更合适。

最佳答案

此正则表达式应捕获所有出现的情况。您需要在全局模式下运行它以获取所有组。即使在并非所有 4 个组都存在的情况下,它也会匹配,但您可以在之后简单地检查以确保它包含所有 4 个组。

它实际上并没有强制执行组排序的格式,只是每个组由 -/ 分隔,年份除外和顺序,它允许不分开。

(?:(?<=^|-|\/)(?:(?P<cc>[A-Z]{2})|(?P<co>[A-Z]{3})|(?P<y>\d{4})|(?P<s>\d{5})|(?:(?P<y2>\d{4})(?P<cc2>\d{5})))(?=-|\/|$))+

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

关于c# - 正则表达式从用户定义的 id 中提取序号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931262/

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