2016-08-19 6 views
0

Я данных MDX формата:RegEx заменить/удалить все периоды внутри скобок

[Measures].[Gross Revenue(Exl. Post-Or Disc.)] 

И мой раскол логики для разделения на группы этих (например, Arr («[Measures]», «[Общий доход (Exl. Post-Or Disc.)] ') В настоящее время навешивается на сокращенные части. Конечно, это не идеально, но самый простой способ справиться с этим заключается в том, чтобы удалить все периоды в скобках.

My current RegEx :

RegExReplace('[Measures].[Gross Revenue(Exl. Post-Or Disc.)]', '\[(.*?)\]', '', 1) 

в настоящее время дает мне:

. 

В идеале, это должно выглядеть так:

[Measures].[Gross Revenue(Exl Post-Or Disc)] 

Я довольно ужасно с RegEx и не могу понять, как избежать этого периода для жизни меня , поэтому любые указатели будут очень благодарны - спасибо!

+0

Используйте '' \. (? = [^] [] *]) '. Это AHK? –

+0

На каком языке вы работаете (для 'RegExReplace', ...)? – trincot

+0

Если это AHK, то это PCRE. И причудливое регулярное выражение PCRE, чтобы убедиться, что мы исключаем совпадение '.' Внутри '[...]': ['(?:^[^ [] * |] [^ [] * $ |] [^] [ ] * \ [) (* SKIP) (* FAIL) | \ .'] (https://regex101.com/r/wL2eE1/1) –

ответ

5

Период . на самом деле является особым символом в регулярном выражении и означает «любой символ». Чтобы использовать специальный символ как литерал, вам нужно «убежать» от него. Обычно escape-символом является обратная косая черта \.

Пожалуйста, дайте мне знать, если это выражение решает вашу проблему:

(?<!\])\.(?!\[) 

Есть три части этого выражения:

  1. (?<!\]) ← Отрицательный просмотра назад означает «не предшествует закрывающей скобки»
  2. \. ← Литературный период
  3. (?!\[) ← Отрицательное значение «нет» с понижением на открытый кронштейн "

На обычном языке имеет смысл читать их в порядке 2, 1, 3: период, которому не предшествует закрытая скобка или не следует открытая скобка.

Для получения более подробной информации о регулярных выражениях см regular-expressions.info, в частности, эта страница на «lookaheads» и «:» просмотр назад http://www.regular-expressions.info/lookaround.html

Если вы хотите больше практики, этот сайт имеет приятный интерфейс для тестирования и проверки правильных выражений: https://regex101.com/

+0

Это прекрасно работало для меня! Спасибо за разрушение каждого раздела и за предоставление этих полезных ресурсов. Я идиотски пытался учиться через [https://regexcrossword.com/](https://regexcrossword.com/). Определенно лучше для чистки, чем для использования в качестве учебного ресурса. – dgills

+0

Я так рад! Я относительно новый вкладчик здесь. Для меня это интересный и продуктивный способ общения с людьми в Интернете. Хорошего дня! –

+0

Не полагайтесь на regex101 при тестировании .NET regex, сайт не поддерживает синтаксис .NET regex. Используйте инструмент Ultrapico Expresso. Кроме того, нет смысла избегать ']' вне класса символов. –

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