2017-02-09 14 views
3

Я пытался найти регулярное выражение, которое будет работать в разделе «Тестирование тестового покрытия» на странице «CI/CD Pipelines». Это не помогает примерам демонстрировать несогласованные примеры, т. Е. Некоторые escape-скобки и другие не совпадают с символами процента, некоторые фиксируют явный результат в $1 и т. Д. В любом случае, вот мой текст - что такое регулярное выражение?Регулярное выражение для Gitlab CI Анализ синтаксиса покрытия

CI Знак:

![coverage](https://gitlab.com/mycompany/master/badges/master/coverage.svg?job=coverage) 

Выходной текст:

Unit test coverage: 
    10.01% blocks 
    10.01% lines 

Пробовал до сих пор: (добавлены косые просто представлять пространство на передней или регулярное выражение)

/ \(\d+\.\d+\%\) blocks/ 
/(\d+\.\d+\%) blocks/ 
/(\d+\.\d+%) blocks/ 
/(\d+\.\d+)% blocks/ 

ответ

1

Этот regex должен захватить покрытие блоков:

^\s*(\d+(?:\.\d+)?%)\s*blocks 

Если вы хотите, чтобы захватить покрытие линии, а не затем использовать это:

^\s*(\d+(?:\.\d+)?%)\s*lines 

GitLab добавляет передней и задней / автоматически, так что вам не нужно, чтобы добавить их в регулярных выражениях.

Для дальнейшего использования, GitLab написан на Ruby, так что вы можете проверить это регулярное выражение в Руби над на rubular.com

+0

Я думаю, вы можете улучшить его немного, сделав его немного более гибким - соответствовать любой пробел вместо всего пространства, сделать пробельные обязательно («блоки» или «линии» ключевое слово имеет значение), уберите десятичную точку и процентное соотношение, отображаемое без десятичных цифр. http://rubular.com/r/7m5Z48JRcQ – tmt

+0

@tmt Я обновил свой ответ, чтобы использовать некоторые из ваших предложений. – BrokenBinary

+0

Это регулярное выражение не работает для меня. В частности, что предполагается захватить? Должен ли он быть десятичным, то есть «10.01», или процентом, то есть «10.01%» или что-то еще? Регулярное выражение, предоставленное @BrokenBinary, имеет несколько захватов. – Dan

0

Проблема в том, что URL покрытия запроса «? Работа = охват» неверен. Что касается регулярного выражения, то я использовал:

\W(\d+(?:\.\d+)%)\sblocks