В первом вы можете использовать переменное количество пробелов с (?<=\d{5}: +)
, но, как и в другом ответе, это может не поддерживаться вашим механизмом регулярных выражений.
Последнее выражение не соответствует ни одной строке из-за .
в данных, оно не является частью класса \d
char, вы можете использовать [\d\.]
Как правило, я всегда начинаю писать простейшее регулярное выражение, которое это сделает, и полагаюсь на шаблоны данных, которые, как я считаю, останутся.
Если вы ожидаете, что единица всегда будет после числа, которое вам нужно, и это всегда будет bit/s
, нет причин не включать его как литерал в ваше регулярное выражение:
[\d\.]+ bit/s$
Затем вы можете начать превращать его в более сложное выражение, если обнаружите исключения в своих данных, например единицу с кбит/с:
(<value>[\d\.]+) *(<unit>\w+)/s$
Использование именованных групп захвата, чтобы было проще и читабельнее ссылаться на них позже, чтобы можно было умножить значение по единице и т.д.
Резюме: не используйте более сложные функции, если они вам не нужны.
person
paolobueno
schedule
06.08.2013
(?<=...)
положительный взгляд сзади. Некоторые механизмы регулярных выражений не поддерживают (положительный/отрицательный) взгляд назад. - person falsetru   schedule 06.08.2013