我正在编写一些正则表达式来匹配包含用空格填充的数字元素的行,例如-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)$/
混杂在其中的还有其他只有一个或两个数字组的行,带有展示垃圾的行,以及其他可能无法确定内容的行,因此我希望在匹配时非常精确。
right()
或substring()
函数将结果截取为仅 7 个字符。 - ean5533