我努力尋找解決方案,但失敗。 A(很長)的字符串結尾是這樣的:正則表達式:在特定字符串後查找大寫字母
...目的地:美國,荷蘭,英國,法國,GER
的目標是:
- 找到所有UPPERCASE-話(而不僅是上面提到的)
- 一個,兩個或三個字母
- 只考慮話後
destination:
我完成了循環,成功讀取整個字符串的所有兩字母的單詞放入一個列表:需要
@"\b[A-Z][A-Z]\b"
但更多的精密度。
任何正則表達式專家都可以提供幫助嗎?
我努力尋找解決方案,但失敗。 A(很長)的字符串結尾是這樣的:正則表達式:在特定字符串後查找大寫字母
...目的地:美國,荷蘭,英國,法國,GER
的目標是:
destination:
我完成了循環,成功讀取整個字符串的所有兩字母的單詞放入一個列表:需要
@"\b[A-Z][A-Z]\b"
但更多的精密度。
任何正則表達式專家都可以提供幫助嗎?
@"destination.*?([A-Z]+)\b"
這是你的正則表達式
+
意味着一次或多次
.*
指任何字符0次或更多次。和?
之後的符號意味着懶惰的正則表達式。它將匹配字符,直到它發現第一個大寫字母。如果沒有字符串中的符號「目的地:ABCD」:您正在使用哪種語言
爲什麼你用'。*?'當':\ s *'根據tcs問題會更準確?他還說,它需要是1到3個字母代碼 - 所以不要使用'+',而是使用'{1,3}'。 '@ 「目的地:\ S *([A-Z] {1,3})」' – dognose
匹配,你需要將在組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
將'目的地:美國,NL'(都在同一時間)是有效的,還是侑例如平均,它必須是「目的地:美國」還是「目的地:英國」? – dognose
@dognose我相信它是'目的地:美國,NL,...' –