2013-02-06 86 views
0

我努力尋找解決方案,但失敗。 A(很長)的字符串結尾是這樣的:正則表達式:在特定字符串後查找大寫字母

...目的地:美國,荷蘭,英國,法國,GER

的目標是:

  • 找到所有UPPERCASE-話(而不僅是上面提到的)
  • 一個,兩個或三個字母
  • 只考慮話後destination:

我完成了循環,成功讀取整個字符串的所有兩字母的單詞放入一個列表:需要

@"\b[A-Z][A-Z]\b" 

但更多的精密度。

任何正則表達式專家都可以提供幫助嗎?

+0

將'目的地:美國,NL'(都在同一時間)是有效的,還是侑例如平均,它必須是「目的地:美國」還是「目的地:英國」? – dognose

+0

@dognose我相信它是'目的地:美國,NL,...' –

回答

0

@"destination.*?([A-Z]+)\b"這是你的正則表達式
+意味着一次或多次
.*指任何字符0次或更多次。和?之後的符號意味着懶惰的正則表達式。它將匹配字符,直到它發現第一個大寫字母。如果沒有字符串中的符號「目的地:ABCD」:您正在使用哪種語言

您正在使用什麼語言
+1

爲什麼你用'。*?'當':\ s *'根據tcs問題會更準確?他還說,它需要是1到3個字母代碼 - 所以不要使用'+',而是使用'{1,3}'。 '@ 「目的地:\ S *([A-Z] {1,3})」' – dognose

0

匹配,你需要將在組1,我不知道這個詞後
.*將匹配「ABC」?

這是在C#中的例子:

string regex = @"destination:\s*([A-Z]{1,3})(?:(?:,\s*)([A-Z]{1,3}))*"; 
var m = Regex.Match("... destination: US, NL, UK, FRA, GER", regex); 

if (m.Success) { 
    Console.WriteLine(m.Groups[1].Value); 
    if (m.Groups[2].Success) { 
     foreach (var capture in m.Groups[2].Captures) { 
      Console.WriteLine(capture.ToString()); 
     } 
    } 
} 

它打印:

US 
NL 
UK 
FRA 
GER 
相關問題