Этого должно быть легко достичь, полагаясь на группы захвата:
cow/[^0-9]*([0-9.]+)
Группа будет содержать текст, который вы хотите извлечь, в Java group(index)
, в C# с Groups[index]
. Другие языки предоставляют аналогичные функции.
Не пытайтесь решить все внутри регулярного выражения, но используйте возможности вашей среды выполнения:)
Редактировать после комментария к OP:
Azure У Кусто есть функция extract(regex, captureGroup, text [, typeLiteral])
для извлечения групп из совпадений регулярных выражений:
extract("cow/[^0-9]*([0-9.]+)", 1, "cow/ a12.34 -123") == "12.34";
Аргумент 1
говорит Кусто извлечь первый захват группа (выражение в скобках).