我努力寻找解决方案,但失败了。一个(很长的)字符串的结尾是这样的:
...目的地:美国、荷兰、英国、法国、德国
目标是:
- 查找所有大写单词(不仅是上面提到的)
- 一个、两个或三个字母
- 只考虑之后的词
destination:
我完成了循环并成功地将整个字符串的所有两个字母单词读入了一个列表:
@"\b[A-Z][A-Z]\b"
但需要更精确。
任何正则表达式专家可以提供帮助?
我努力寻找解决方案,但失败了。一个(很长的)字符串的结尾是这样的:
...目的地:美国、荷兰、英国、法国、德国
目标是:
destination:
我完成了循环并成功地将整个字符串的所有两个字母单词读入了一个列表:
@"\b[A-Z][A-Z]\b"
但需要更精确。
任何正则表达式专家可以提供帮助?
@"destination.*?([A-Z]+)\b"
这是您的正则表达式
+
表示一次或多次
.*
表示任何字符 0 次或多次。然后?
签名意味着懒惰的正则表达式。它将匹配字符,直到找到第一个大写字母。如果没有该登录字符串“目的地:ABCD”.*
将匹配“:ABC”
后匹配您需要的单词将在第 1 组。我不知道您使用的是哪种语言
您使用什么语言?
这是 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