2017-07-07 78 views
-1

在我的情況下,我需要n = 2。捕獲字符串,只有n個字

這可以用正則表達式來完成嗎?查找一串文本中有多少單詞,並只捕獲2個單詞的字符串?

例子:

this is a test string 
another one 
and another one 

輸出:

another one 

我需要什麼,尋找字符串那裏是隻有一個空格應該工作,它捕捉那些只有2個字(或一個空間),我不知道該怎麼做。

+0

語言?是否有尾隨或領先的空間?你不想捕獲一個字串,對嗎? –

+2

是一個「單詞」只是由空格分隔的每組字符?例如。 「這是 - 一個考驗」。 '是'[「這個」,「是」,「 - 」,「a」,「test。」]'? – Alexander

+0

@SebastianProske沒有味道,要在記事本++中做到這一點。我的數據集afaik中沒有尾隨/前導空格。我不想捕捉一個字符串,不會。 @亞歷山大是。例如:10k比賽 - >「10k」「比賽」 – Hoju

回答

2

像這樣相當簡單的東西應該是你的;

^\w+(?:\s\w+){1}$ 

更一般地,你可以使用;

^\w+(?:\s\w+){N}$ 

其中N = n - 1和n,如指定,是要捕獲的單詞的數量。

+0

ohh看,你找了一個單詞,然後在第一個單詞後面只有1個空格+單詞的情況下進行空格+單詞捕獲,對嗎?聰明,謝謝:D – Hoju

+0

@亞歷山大不幸的是,它沒有 - 可選空間打破了模式,測試用例'foo'匹配不正確。 –

+0

@TomWyllie嗯,我明白了。很好的接收。 – Alexander

1

最字面的路要走會

^\S+ \S+$ 

使用錨和匹配兩組用空格隔開的非空格的。

+0

剛剛嘗試過您的答案,如果您需要匹配諸如「a-b測試」之類的東西,它會比其他解決方案更好,因爲\ w不會匹配「a-b」,我認爲。因此,根據您是否需要更嚴格的解決方案,這應該被使用。羞愧不能接受兩個答案;) – Hoju