2016-12-14 2 views
1

У меня есть список изменений, который имеет номер версии в квадратных скобках, как это:Regex - Извлечь весь текст, за исключением квадратных скобок и их содержание

## [0.3.0] - 2016-12-13 - FIX This is an example fix - FEATURE An example feature

Я хочу, чтобы извлечь только номера версий, так что я я ушел с:

[Unreleased] [0.3.0] [0.2.4] [0.2.3]

в идеале я хотел бы извлечь только первое значение в квадратных скобках, что не «Unreleased» так что я получаю последний номер версии 0.3.0, хотя я не уверен, что это возможно в regex.

Может ли кто-нибудь помочь? Спасибо :)

+1

Какой инструмент/язык вы используете? – Bohemian

+2

Что вы пробовали до сих пор, и как насчет вашей попытки не соответствует вашим потребностям? – Welbog

+0

'(\ [. *? \])' Попробуйте это. – MYGz

ответ

2

Вы можете использовать регулярное выражение как это:

.*(\[.*?\]).* 

С строкой замены: \1

Btw, если вы хотите, чтобы удалить все другой текст, то вы можете использовать:

.*(\[.*?\]).*|* 

Working demo

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

.*(\[.*?\])[\s\S]*?(^$|\z) 

Working demo

+0

Thats perfect! И так быстро, спасибо Федерико :) – alidrongo

+0

'[^ [\ r \ n] + (?: \ R [^ [\ r \ n] +) * \ R? \ (\ [[^]] * \]) 'должно быть улучшением производительности для вашего последнего регулярного выражения. '[^ [\ r \ n] + | (\ [[^]] * \])' для предыдущего. –

+0

@SebastianProske, очень приятно знать. Спасибо за комментарий. –

Смежные вопросы