Я предполагаю, что у вас есть способность к скрипту внутри vb. Есть несколько способов, но лучшим способом было бы сидеть в глобальном цикле поиска. Когда вы получаете совпадение для матча в группе захвата 1. Если группа 1 соответствует, возьмите ее значение, если нет, продолжайте, пока не будет больше совпадений.
# (?:T\s{0,5}\d*\.\d*)|(\d*\.\d*)
(?: # Consume a T <space> number, do not take it
T \s{0,5} \d* \. \d*
)
| # or,
(\d* \. \d*) # (1), Consume a number, take this one
И это может быть сокращен до
# (T\s{0,5})?(\d*\.\d*)
(T \s{0,5})? # (1), A 'T' this number is not valid
(\d* \. \d*) # (2), Consume a number, take this one
Group 2 всегда содержит номер. Если соответствует группа 1, число недействительно.
Что определяет близость к 'T'? Разве это просто «разделено пробелами»? Кроме того, как насчет вашего текущего регулярного выражения не является идеальным? –
Текущее текущее регулярное выражение принимает число справа. Я бы хотел, чтобы это проигнорировалось. '\ s +' или "разделенные пробелами" в порядке. Если \ d + \. \ D + имеет пробел, а T слева от него, я не хочу его принимать. –
Если вы хотите только первое число, остановитесь после того, как найдете его. Если вы хотите все цифры, но исключаете некоторые, это другое. – sln