gpt4 book ai didi

c# - 使用正则表达式多次查找精确长度匹配

转载 作者:行者123 更新时间:2023-12-03 21:27:13 25 4
gpt4 key购买 nike

我需要一个正则表达式来连续查找正好 8 个数字的组。我得到的最接近的是:

 [0-9]{8}

但这并不是我所需要的。如果我有一个 9 长的数字,它将匹配前 8 个,但如果它长于或短于 8,我希望它忽略它。

这里有些例子
1234567890 <- no match, it's longer than 8
12345678 <- match: "12345678"
1234567809876543 <- match 1: "12345678", match 2: "09876543" (two groups of 8)
,,111-11-1234,12345678, <- match: "12345678"

总而言之,对于每组正好 8 个数字进行匹配。

我正在处理 OCR(光学字符识别)的一些结果,我必须处理结果的缺点,以便我的输入可以像上面的示例一样变化。

以下是一些用例数据: http://pastebin.com/uijF9K9n

最佳答案

您可以在 .NET 中使用以下正则表达式:

(?<=^|\D|(?:\d{8})+)\d{8}(?=$|\D|(?:\d{8})+)

regex demo

它基于可变宽度的lookbehind 和lookahead。

正则表达式分解:
  • (?<=^|\D|(?:\d{8})+) - 仅当在字符串开头(^),或前面不是数字(\D)或1个或多个8位数字序列((?:\d{8})+)...
  • \d{8} - 匹配 8 位数字,后跟...
  • (?=$|\D|(?:\d{8})+) - 字符串结尾 ($) 或不是数字 (\D) 或 1 个或多个 8 位数字序列 ((?:\d{8})+)。

  • 重要 :

    如果与另一个答案相比,我对“额外”复杂性投了反对票,请注意 我们的解决方案是不同的 : my regex matches 8-digit number in ID12345678 the other one does not 由于单词边界。

    关于c# - 使用正则表达式多次查找精确长度匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745957/

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