2014-03-04 83 views
0
xxxTxxx 

匹配字符

xxxTxx 

xxxTx 

我想所有 X的結尾。

(.*)(x$)只會給我最後的x。 (.*)(x*$)將不起作用,因爲它不匹配結束。我需要使用一些神奇的背後,對吧?

謝謝你的正則表達式頭!

+0

我假設「T」是一個佔位符,而不是保證在那裏,對嗎? – ChicagoRedSox

回答

1

如何:

^(.*?)(x+)$ 

你必須在組2 x和所有這些都是之前在組1

0

它會一直是'T'嗎?

在這種情況下:

T(x*)$ 

或許的T可能是除了 'X' 任何東西:

[^x](x*)$ 

編輯:

其實:

(x*)$ 

。 ..足夠了。它會貪婪地消費'x's。如果在'x'運行結束時發現字符串的末尾,那就是匹配。否則它會丟棄它們並開始嘗試重新匹配。

0

嘗試使用此模式:使用RegexOptions.RightToLeft

你會確保你開始尋找字符串的結尾。

string text = "xxxTxxx"; 
string pattern = @"x+"; 
Regex r = new Regex(pattern, RegexOptions.RightToLeft); 
string temp = r.Match(text).Value; 

輸出將是:

「XXX」

如果你想以確保是在文本的末尾,使用此:

string text = "xxxTxxx&"; 
string pattern = @"x+$"; 
Regex r = new Regex(pattern, RegexOptions.RightToLeft); 
string temp = r.Match(text).Value; 

在這種情況下的輸出將是:

「」

+0

你怎麼知道他在使用.NET?據我所知,這是唯一提供從右到左匹配選項的正則表達式。 –

+0

嗨艾倫!是的,你是對的,我不知道!但是他怎麼沒有指定語言,我用我知道的語言來回答;)如果他使用.NET,也許可能對他有用,如果不是的話......那麼它不會! –

4

如果你只是想在x s的結束,你可以使用:

/(x+)$/ 

這基本上說來看看字符串的結尾至少一個X,並找到儘可能多的。

如果你希望所有x s的開始,你可以使用:

/^(x+)/ 

這做同樣的事情,但告訴它看字符串的開頭。

+0

如果我在x之前還想要一切,該怎麼辦? –

+0

我會補充一點。一會兒。 – Anonymous