0

解決策を見つけるのに苦労しましたが、失敗しました。(非常に長い) 文字列は次のように終了します。

... 目的地: US、NL、UK、FRA、GER

目標は次のとおりです。

  • すべての大文字の単語を検索します (上記だけでなく)
  • 一、二、三文字で
  • 後の単語のみを考慮するdestination:

ループを終了し、文字列全体の 2 文字の単語をすべてリストに読み込むことに成功しました。

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

しかし、より正確さが必要です。

正規表現の専門家が助けてくれますか?

4

2 に答える 2

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
于 2013-02-06T07:37:32.940 に答える
0

@"destination.*?([A-Z]+)\b"これはあなたの正規表現であり、
+1回以上
.*は任意の文字を0回以上意味します。?その後の署名は、遅延正規表現を意味します。最初の大文字が見つかるまで文字を照合します。そのサインイン文字列がなければ、「destination: ABCD」.*は「: ABC」と
一致し、一致する単語はグループ 1 になります。どの言語を使用しているかわかりません

于 2013-02-06T07:17:45.213 に答える