gpt4 book ai didi

正则表达式排除数字的两个字符内的数字

转载 作者:行者123 更新时间:2023-12-04 03:57:07 25 4
gpt4 key购买 nike

我有一些手动输入的数据(这是一个电子邮件主题),我正在尝试提取正确的 ID 以执行一系列启用 RPA 的操作。

RE:'HC=312-822-281' abc2-1234567 7354612

我有一个正则表达式查询:

(?<!\d)\d{7}(?!\d)

我想提取 7354612 而不是 1234567

我想避免匹配前面带有连字符或连字符和空格的任何 7 位数字。

我的初始查询在 80% 的时间都有效,但这个连字符问题干扰了其他 20%。

最佳答案

您可以修改现有的(?<!\d) lookbehind 也排除连字符后的位置,即 (?<![\d-]) ,并添加另一个 lookbehind 以排除连字符 + 空格上下文( (?<!- )(?<!-\s) ):

(?<![\d-])(?<!- )\d{7}(?!\d)
(?<![\d-])(?<!-\s)\d{7}(?!\d)

备注\s匹配任何空格。查看regex demo .

详情

  • (?<![\d-]) - 如果当前位置的左侧紧邻有数字或连字符,则匹配失败的负后视
  • (?<!-\s) - 如果存在 - 则匹配失败的负面回顾和紧跟在当前位置左侧的空格
  • \d{7} - 任意七位数字
  • (?!\d) - 如果当前位置右侧紧邻有一个数字,则匹配失败的否定前瞻。

变化

对于 PCRE 正则表达式,您还可以使用

-\s*\d{7}(?!\d)(*SKIP)(*F)|(?<!\d)\d{7}(?!\d)

参见 regex demo , 其中-\s*\d{7}(?!\d)(*SKIP)(*F)|火柴- , 0+ 空格, 七位数字,之后没有更多数字并跳过该匹配项,只返回 (?<!\d)\d{7}(?!\d) 的匹配项模式。

在 .NET 中,现代 JavaScript 和 Python 中的 PyPi 正则表达式,您可以使用

(?<!\d|-\s*)\d{7}(?!\d)

参见 this regex demo .在这里,(?<!\d|-\s*)如果有数字或 -,则否定后视会导致匹配失败+ 紧邻当前位置左侧的 0 个或多个空白字符。

关于正则表达式排除数字的两个字符内的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63687536/

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