RegEx:在特定字符串后查找大写单词

时间:2013-02-06 07:15:32

标签: regex

我努力寻找解决方案,但失败了。一个(非常长的)字符串的结尾如下:

  

...目的地:美国,荷兰,英国,法兰克福机场,GER

目标是:

  • 找到所有大写单词(不仅仅是上面提到的)
  • 带有一个,两个或三个字母
  • 仅考虑destination:
  • 之后的字词

我完成了循环,并成功地将整个字符串中的所有双字母单词读入列表:

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

但需要更多的精确度。

任何正则表达式专家都可以提供帮助吗?

2 个答案:

答案 0 :(得分:0)

@"destination.*?([A-Z]+)\b"这是你的正则表达式 +表示一次或多次 .*表示任何字符0次或更多次。和?之后的标志意味着懒惰的正则表达式。它将匹配字符,直到找到第一个大写字母。没有该符号字符串“destination:ABCD”.*将匹配“:ABC”
匹配单词后,您需要的是第1组。我不知道您使用的是哪种语言

答案 1 :(得分:0)

您使用的是哪种语言?

这是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