Регулярное выражение: захватить строку, которая начинается после определенной строки и заканчивается, когда она попадает в любой другой символ - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь использовать Regex для получения подстроки большой строки. Общая строка содержит определенный текст «cow /», а затем любое количество символов или пробелов, не являющихся цифрами. Первое обращение di git - это начало нужной мне подстроки. Эта желаемая подстрока состоит только из цифр и точек, первый видимый символ или пробел, который не является di git или точкой, указывает конец желаемой подстроки.

Например: 'cow / a12.34 -123'

Требуемая подстрока - '12 .34 '.

Пока у меня есть это регулярное выражение, которое частично работает (я думаю, что '|.' Не совсем правильно): (? <= ([Az] | [0-9]) / \ s *). <em>? (? = \ S [^ 0-9 |.])

Заранее спасибо.

1 Ответ

0 голосов
/ 27 мая 2020

Этого должно быть легко достичь, полагаясь на группы захвата:

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 говорит Кусто извлечь первый захват группа (выражение в скобках).

...