gpt4 book ai didi

regex - 如何捕获两个字母?

转载 作者:行者123 更新时间:2023-12-04 18:27:05 27 4
gpt4 key购买 nike

我有正则表达式 [^&]_*\s*(SF)*\d{8}

我正在尝试将 8 位数字与单词 SF 或 SF_ 匹配

例子

  1. _zz&69050398_5d147597dd4aca00014351d9_zz sf 76064603RPL_Import_Create

  2. _ac&68728692_5d18fa52dd4aca00014356dd_SF 76113839 副本

SF 中的 S 没有突出显示,第三个“_”之前的 8 位数字也突出显示。我需要避免这种情况。

你可以在这里看到 https://regex101.com/r/P0P238/1/

最佳答案

在您的模式 [^&]_*\s*(SF)*\d{8} 中,您匹配的不是 & 符号 [^&], 0 + 次 _,0+ 次空白字符并在 0+ 次重复组匹配 SF 中捕获。然后模式以匹配的 8 位数字结束。

这意味着有很多“可选”部分可以匹配 0+ 次。

你得到你的匹配是因为 [^&] 可以匹配 F,那么 _*\s*(SF)* 是可选但\s*可以匹配空格,然后可以匹配8位数字。

您可以通过从组中删除量词并在字符类 [\s_] 中匹配 \s_ 来更新您的模式

[^&][\s_](SF) \d{8}

Regex demo

如果您只想匹配以 SF 和空格为前缀的 8 位数字,您可以使用不区分大小写的匹配并使用:

(sf) \d{8}

Regex demo

关于regex - 如何捕获两个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56959777/

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