2016-03-14 111 views
-2

我在尋找正則表達式,它可以讓我找到句子中倒數第n個單詞。 我有字符串:正則表達式 - 從第n個單詞到最後一個

Lorem Ipsum is simply dummy text of the printing 

我想獲得

simply dummy text of the printing 

如何正則表達式應該是什麼樣子?

謝謝。

+1

您正在使用哪種編程語言? –

+0

我正在使用Ruby。 – Przemek903

+0

您不需要正則表達式 –

回答

0

爲PCRE

^\w+\s+\w+\s+(.*) 

應該工作,你需要從比賽中提取分組1。如果少於3個單詞,則不會匹配。

+0

它的效果很好。謝謝:) – Przemek903

4

爲什麼你會在這裏使用regexp?

n = 3 
s = 'Lorem Ipsum is simply dummy text of the printing' 
p s.split[n..-1] #=> ["simply", "dummy", "text", "of", "the", "printing"] 
p s.split[n..-1].join(' ') #=> "simply dummy text of the printing" 
+0

重新閱讀這個問題後(和upvoting你的答案後:-))我很確定OP想要一個字符串(不是數組)返回。我這樣說是因爲「印刷品的虛擬文本」與給定的字符串格式相同,並且還根據OP對@Peter的答案的評論。您可以在'.join'上添加粘性,但這可能會改變單詞之間的間距。 –

+0

@CarySwoveland感謝您的評論,我認爲使用'.join'返回一個字符串是很明顯的,假設這是一個正確的「句子」,如問題中所述 –

1

我假設給定的字符串不包含標點符號(逗號,分號,冒號,句號,問號等),你想返回一個字符串(排除的前兩個單詞和空格以下第二個字)。

在構造正則表達式時,必須考慮到某些詞彙是收縮或被連字符的事實。

r =/
    \A   # match start of string 
    (?:  # begin a non-capture group 
     [a-z'-]+ # match >= characters in character class 
     \s+  # match > 0 characters 
    ){2}  # end non-capture group and match it twice 
    /xi 

"It's tea-time at the Ritz".gsub(r, '') 
    #=> "at the Ritz" 
相關問題