Регулярное выражение для получения подстроки справа налево - PullRequest
0 голосов
/ 05 июля 2019

Я хочу использовать регулярное выражение в PowerShell для удаления определенных подстрок из XML-файла.Этот файл выглядит примерно так:

<Name>FixedString1 FixedString2 VariableString</Name><Name>FixedString1 SearchString VariableString</Name>

Таким образом, в файле есть несколько случаев использования «FixedString1» и «FixedString2» внутри тегов «Name».«VariableString» различается в каждом случае.

Регулярному выражению необходимо найти «SearchString», используйте его в качестве начальной точки для перехода назад (справа налево) до закрывающей скобки «>» в ​​«Имя»тег, включая «FixedString1» и саму «SearchString».Таким образом, выходные данные регулярного выражения должны быть

FixedString1 SearchString

, которые я позже смогу удалить из файла XML с помощью PowerShell, чтобы у меня остался

<Name>VariableString</Name>

в файле XML.

То, что я до сих пор пробовал в regex101.com, это

FixedString1 .*(?<= SearchString )

, но это регулярное выражение совпадает с первого случая «FixedString1» в файле, то есть слева направо, до «SearchString».":

FixedString1 FixedString2 VariableString</Name><Name>FixedString1 SearchString 

Я хочу, чтобы он нашел" SearchString "и оттуда шел влево до первого случая" FixedString1 ", включая обе строки.

Можете ли вы помочьмне с этим?Спасибо!

1 Ответ

1 голос
/ 05 июля 2019

Я думаю, вам нужно следующее:

FixedString1[^>]*SearchString

Соответствует от FixedString1 до SearchString, но только строки, которые не включают >.

тест regex101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...