2012-07-12 51 views
0

考慮到Ruby 1.8.7或Javascript。正則表達式:如何排除空格

我有以下字符串:(GMT+02:00) Istanbul,我想捕捉一切後)(注意包括關閉括號後的空格)

我已經創建了幾乎與例外的工作則包括不需要的whitspace的正則表達式。

\s\D* =>Istanbul

我怎樣才能解決這個問題,是這個正則表達式這樣做?

編輯

字符串可能是別人,像(GMT+01:00) West Central Africa

在這種情況下,我想West Central Africa

所以,一些答案將無法正常工作。

對不起,我忘記提及了。

謝謝。

回答

1

在Ruby:

irb> line = '(GMT+01:00) West Central Africa' 
irb> line.sub(/^.*\)\s/, '') 
=> "West Central Africa" 

在JavaScript:

js> var line = '(GMT+01:00) West Central Africa' 
js> line.replace(/^.*\)\s/, '') 
West Central Africa 
+0

完美!謝謝! ;) – 2012-07-12 19:20:29

0

您可以在可選的空格字符\ s *之間插入正則表達式中的每個其他字符。雖然被授予,但會變得有點冗長。

0

執行以下操作:

\S+$

它匹配的一切,是不是在該行的後面加上一個空格。

如果你想只匹配字母字符,你可以使用以下命令:

\w+$

您可以測試他們here

1

積極緘默聲明是一種選擇。

(?<=\s)[\D]+ 

(與Python正則表達式的lib測試)

要提取的第一個字後,格林尼治標準時間偏移定義像在你的榜樣?

(?<=\([\D]{3}[\+\-][\d]{2}:[\d]{2}\)\s)[\D]+ 
+1

爲什麼這樣的複雜的解決方案??? :D – Zagorax 2012-07-12 11:43:13

+0

哪一點比較複雜?毫無疑問,第二種模式可以縮短,但並不複雜! – 2012-07-12 11:58:07

+0

不需要有這麼長的正則表達式來完成用戶所要求的。只是這個。 :) – Zagorax 2012-07-12 17:09:20

0

當你說捕獲,如果你希望得到一個名爲捕獲,而忽略其他,你可以做follwing:

(?:.+\s)(?<Country>.+) 
0

非常簡單的表達式:

[^)]*\)\s*(\w+) 

解釋:

[^)]*  any character except: ')' 
      (0 or more times, matching the most amount possible) 

\)   ')' 

\s*   whitespace (\n, \r, \t, \f, and " ") 
      (0 or more times, matching the most amount possible) 

\w+   word characters (a-z, A-Z, 0-9, _) 
      (1 or more times, matching the most amount possible)