Я пишу несколько регулярных выражений для соответствия строкам, которые содержат числовые элементы, дополненные пробелами, например -2.45
. Регулярное выражение для этого достаточно просто:
/(\s*-?\d+\.\d{2})/
Однако у меня есть дополнительное ограничение, что весь блок ограничен ровно семью символами. Я могу изменить выражение, чтобы ограничить начальные пробелы и цифры в пределах их теоретических максимумов:
/(\s{0,3}-?\d{1,4}\.\d{2})/
Но это не решение, так как \s{0,3}
совпадает независимо от \d{1,4}
, так что все это может соответствовать фрагменту в любом месте от четырех до одиннадцати символов.
Есть ли способ, которым я могу ограничить целую группу подобной фиксированной длиной?
Edit:
Чтобы уточнить, я обрабатываю строки с тремя из этих семи групп символов, разделенными тремя пробелами, поэтому большее регулярное выражение следует вдоль строк:
/^(fixed length stuff at start of line)(7 char chunk)\s{3}(2nd 7 char chunk)\s{3}(3rd 7 char chunk)$/
Смешаны и другие строки, в которых есть только одна или две из этих числовых групп, строки с презентационным мусором и строки с другим (возможно, непознаваемым) контентом, поэтому я хочу быть достаточно точным в том, что мне подходит.