2015-05-07 19 views
1

我想在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的那個短語

+2

爲什麼要使用正則表達式?爲什麼不只是'if(thestring.Contains(「gt; gt; ssssss cccc = SpellE> OwnerName ssssss lt; lt;」)){..'? – Blorgbeard

+1

請看看正則表達式的語法。 '['和']'之間的任何內容都將匹配**方括號之間的任何一個字符**。 – Bas

+0

我不清楚。 ssssss和cccccc可以是任何東西。具體而言,如果它的所有者名稱在gt; gt和lt; lt; lt之間,但不包含GT; GT;或lt; lt; lt;在邊界端點內。它不應該匹配「gt; gt; xxxxx gt; yyyy OwnerName zzz lt; lt;」,但它應該匹配「gt; gt; yyyy OwnerName zzz lt; lt;」。 –

回答

0

https://regex101.com/r/bM7hP8/1 - 試試這個:gt\;gt\;(.*)(OwnerName)(.*)lt\;lt\;

它只捕獲OwnerName序列。

如果你想整個序列,它包像這樣:(gt\;gt\;(.*)(OwnerName)(.*)lt\;lt\;)

0

試試這個:^(gt\;){2}(.*)(OwnerName)(.*)(lt\;){2}$ 它工作正常。 這個正則表達式只匹配gt;gt; ssssss cccc=SpellE>OwnerName ssssss lt;lt;

+0

這個答案出現在低質量的審查隊列中,大概是因爲你沒有解釋代碼。如果你解釋它(在你的答案中),你更有可能得到更多的讚揚 - 而提問者更可能學到一些東西! –

1

我相信你正在尋找的東西是這樣的:

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

此正則表達式有2個特定部分:(?>(?!gt;).)*比賽有沒有gt;(?>(?!lt;).)*比賽有沒有lt;任何文本的任何文本。如果你使用這個正則表達式,我認爲沒有必要在^/$錨點上。

請參閱demo