gpt4 book ai didi

用于查找 "real"3 位序列的正则表达式(忽略嵌入在 4 位序列中的序列)

转载 作者:行者123 更新时间:2023-12-02 05:38:42 25 4
gpt4 key购买 nike

我想要一个正则表达式(使用 Java)来捕获三位数字,例如“876”,但如果它们被埋在一个 4 位数字序列中则不行。

在“876”、“foo876”、“876”、“876”、“food876”和“4foo876”中捕获“876”。

但不在“88foo9876”或“9876”或“a8876”或“a8876foo”内。

我该怎么做?

我想说类似 X(\d\d\d)X 的东西,但是用“\D 或 < em>^ (start-string)”并代替其中的第二个 X 表示“\D or $ (end-string)”。

编辑:

有关答案,请参阅 Xanatos、Code Jockey 和 Tim Pietzcker。

最佳答案

那好吧!对于你要求的 X(\d\d\d)X,使用

(?<=\D|^)(\d\d\d)(?=\D|$)

这是

(?<=\D|^)      # lookbehind for «\D or ^ (start-string)»
(\d\d\d) # then match «three digits such as "876"»
(?=\D|$) # lookahead for «\D or $ (end-string)»

将会

...capture "876" within "876" and "foo876" and " 876 " and "876" and "food876".

But NOT within "88foo9876" or "9876" or "a8876" or "a8876foo".

正如你指定的那样 :D

在RegexBuddy中如下所示:

Screenshot of RegexBuddy showing .Net regex emulation

如果您使用的是没有后视的语言(如 ECMA/JavaScript),您将不得不使用

(\D|^)(\d\d\d)(?=\D|$)     # and use the second capturing group -or-
# use
(?:\D|^)(\d\d\d)(?=\D|$) # and use the first capturing group

关于用于查找 "real"3 位序列的正则表达式(忽略嵌入在 4 位序列中的序列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7711961/

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