gpt4 book ai didi

c# - 正则表达式匹配一定数量的字符并在它们之间留出空格

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

我目前正在研究需要精确匹配 8 位数字的正则表达式。但有时会出现这些数字之间有空格或点的情况。这是我目前使用的正则表达式。

([0-9\ ?.?]{7,16})

它大部分时间都工作正常,但我遇到的问题是它有时会匹配带有很多空格的数字,所以你会得到类似 1234/s/s/s/s 的东西(/s 代表空格)或者有时它只是匹配空格。

我想要的是一个始终匹配至少 8 位数字并且还允许空格和点而不检测少于 8 位数字的正则表达式。我知道这可能是个愚蠢的问题,但我在其他地方找不到我需要的任何东西。

最佳答案

您的 ([0-9\ ?.?]{7,16}) 表达式匹配 7 到 16 次出现的任何字符,这些字符可以是数字、空格、?.。是的, ? 里面的 [...] 是文字 ? ,不是量词。

您需要使用一个表达式来匹配一个数字 ([0-9]),然后恰好是 7 个空格或句点序列 ([ .]),后跟 1 个数字,并确保您不匹配您可能使用的 123.156.78.146 中的数字特殊边界:

(?<!\d[ .]?)\d(?:[. ]?\d){7}(?![ .]?\d)

如果数字之间的空格或.只能是0到1;或者 - 如果空格/点可以出现 0 次或多次,

(?<!\d[ .]*)\d(?:[. ]*\d){7}(?![ .]*\d)

查看 regex demo

(?<!\d[ .]*) 是一个否定的 lookbehind,如果它以一个数字开头,后面跟着 . (s) 或 space(s),那么任何匹配都会失败,如果你需要的 7 位数字是后跟 (?![ .]*\d) (s) 或空格和一个数字。

关于c# - 正则表达式匹配一定数量的字符并在它们之间留出空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41218951/

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