正则表达式从右到左获取子字符串

时间:2019-07-05 09:12:03

标签: regex

我想在PowerShell中使用正则表达式从XML文件内部删除某些子字符串。该文件看起来像这样:

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

因此,在文件中,“名称”(Name)标记中多次出现“ FixedString1”和“ FixedString2”的情况。 “ VariableString”在每种情况下都是不同的。

正则表达式需要找到“ SearchString”,以此为起点向后(从右到左),直到“ Name”标签的右括号“>”,包括“ FixedString1”和“ SearchString”本身。因此,正则表达式的输出需要为

FixedString1 SearchString

稍后可以使用PowerShell将其从XML文件中删除,这样我就可以了

<Name>VariableString</Name>

在XML文件中。

到目前为止,我在regex101.com中尝试的是

FixedString1 .*(?<= SearchString )

但是此正则表达式从文件中的第一个“ FixedString1”匹配开始,即从左到右匹配,直到“ SearchString”:

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

我希望它找到“ SearchString”,然后从那里一直到“ FixedString1”的第一次出现,包括两个字符串。

您能帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您需要以下内容:

FixedString1[^>]*SearchString

它从FixedString1SearchString匹配,但只有不包含>的字符串。

regex101 test