gpt4 book ai didi

regex - 将固定长度 block 与可变长度元素匹配的正则表达式

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

我正在编写一些正则表达式来匹配包含用空格填充的数字元素的行,例如 -2.45 .这个正则表达式很简单:

/(\s*-?\d+\.\d{2})/

但是,我有一个额外的限制,即整个块仅限于七个字符。我可以修改表达式以将前导空格和数字限制在它们的理论最大值内:
/(\s{0,3}-?\d{1,4}\.\d{2})/

但这不是解决方案,因为 \s{0,3}独立于 \d{1,4} 匹配,所以整个事情可以匹配从四到十一个字符的任何地方的块。

有什么方法可以将这样的整个组限制为固定长度?

编辑:

为了澄清起见,我正在处理这七个字符组中的三个以三个空格分隔的行,因此较大的正则表达式遵循以下行:
/^(fixed length stuff at start of line)(7 char chunk)\s{3}(2nd 7 char chunk)\s{3}(3rd 7 char chunk)$/

混合在一起的是其他只有一两个数字组的行,带有展示性垃圾的行,以及带有其他(可能不可知)内容的行,所以我希望我匹配的内容非常精确。

最佳答案

您可以使用 lookahead assertion (并且您不需要括号):

/(?=[\s\d-]{4}\.\d{2})\s*-?\d+\.\d{2}/

例如,您可能需要在正则表达式周围使用一些 anchor ,以确保不匹配超过七个字符,具体取决于分隔这些元素的内容,例如
/(?=[\s\d-]{4}\.\d{2}\b)\s*-?\d+\.\d{2}\b/

确保数字实际上在 \.d{2} 之后结束部分。

关于regex - 将固定长度 block 与可变长度元素匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991661/

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