2011-03-04 51 views
1

在下面的示例中,兩個人之間的對話只需要匹配詢問者文本。 (左邊的文本)除了空格長度超過5個空格的任何字符

Hello, how are you?     I am fine. 
What is your name?     My name is Simon. 
What does Simon say?    Put your hands on your head. 

當我在每一行我想提取

Hello, how are you? 
What is your name? 
What does Simon say? 

但是分別進行正則表達式,我也希望允許在問話文本錯誤的餘地允許單詞之間多達5個空格。提問者和回答者之間的空白數總是超過5個字符。

我已經試過這

([^ ]| {0,5})* 

但抓住了整條生產線

[^({0,5})]+ 

,但我想在括號來評價內部之間不能使用圓括號首先將文本指定爲單個字符。

任何想法,歡迎,謝謝:)

回答

3

嘗試使用正則表達式捕捉:

^(.*?) {5} 

*?是一個非貪婪的匹配,這意味着它會找到最短的匹配而不是最長的匹配。這應該給你你需要的東西。

看到它聯機工作:rubular

+0

+1,應該由6位在正則表達式進行分隔,因爲直至幷包括5位被允許在文本中,但在其他方面是正確的。 – 2011-03-04 11:51:59

1

This does it

^(.*?) {5,} 
+0

+1,應該在正則表達式中用6個空格分隔,因爲在文本中允許包括5個空格,但在其他方面是正確的。 – 2011-03-04 11:52:28

0

爲什麼不只是使用分裂,而不是匹配?

str.split("\s{6,}")

相關問題