正则表达式匹配前导和中间文本

时间:2015-05-07 20:49:42

标签: c# regex

我想在c#中使用正则表达式来查找此文本:

gt;gt; ssssss cccc=SpellE>OwnerName ssssss lt;lt;

在本文中:

gt;gt; ssssss cccc=SpellE>OwnerName ssssss lt;lt;

gt;gt; ssssss cccc=SpellE>RenterName ssssss lt;lt;

我使用了这个正则表达式:

\[gt\;gt\;\](.*)[OwnerName](.*)\[lt\;lt\;\]

但它发现这两个短语不仅仅是包含RenterName的短语

3 个答案:

答案 0 :(得分:1)

我相信你正在寻找这样的东西:

(?:gt;){2}((?>(?!gt;).)*)(OwnerName)((?>(?!lt;).)*)(?:lt;){2}

此正则表达式有两个特定部分:(?>(?!gt;).)*匹配任何没有gt;的文本,(?>(?!lt;).)*匹配任何没有lt;的文本。如果您使用此正则表达式,我认为^ / $锚点不需要。

请参阅demo

答案 1 :(得分:0)

https://regex101.com/r/bM7hP8/1 - 试试这个:gt\;gt\;(.*)(OwnerName)(.*)lt\;lt\;

它只捕获OwnerName序列。

如果您想要整个序列,请将其包裹起来:(gt\;gt\;(.*)(OwnerName)(.*)lt\;lt\;)

答案 2 :(得分:0)

试试这个:^(gt\;){2}(.*)(OwnerName)(.*)(lt\;){2}$ 它工作正常。 此正则表达式仅匹配gt;gt; ssssss cccc=SpellE>OwnerName ssssss lt;lt;