1

次の文字列を正規表現でフィルタリングしたい:

TEST^AB^^HOUSE-1234~STR2255

私は文字列だけを取得したいのですが、"HOUSE-1234"常に先頭"TEST^AB^^"と末尾が. である文字列をテストする必要があり"~"ます。

正規表現がどのように見えるべきか教えてください。

4

7 に答える 7

2

で始まり、で終わる\^\^(.*?)\~パターンを使用できます^^~

string s = @"TEST^AB^^HOUSE-1234~STR2255";
Match match = Regex.Match(s, @"\^\^(.*?)\~", RegexOptions.IgnoreCase);

if (match.Success)
{
    string key = match.Groups[1].Value;
    Console.WriteLine(key);
}

出力は次のようになります。

HOUSE-1234

ここに がありDEMOます。

于 2013-05-21T12:35:47.493 に答える
1
string input = "TEST^AB^^HOUSE-1234~STR2255";
var matches = Regex.Matches(input, @"TEST\^AB\^\^(.+?)~").Cast<Match>()
                .Select(m => m.Groups[1].Value)
                .ToList();
于 2013-05-21T12:35:50.977 に答える
0

あなたが私たちに与えた小さな情報で (そしてTEST^ABが必ずしも一定ではないと仮定して)、これはうまくいくかもしれません:

(?:\^\^).*(?:~)

こちらをご覧ください

または、TEST^AB一定の場合は、それを投げることもできます

(?:TEST\^AB\^\^).*(?:~)

重要な部分は、エスケープする必要があることを覚えておくことです^

于 2013-05-21T12:34:51.583 に答える
0
string pattern=@"\^\^(.*)\~";
Regex re=new Regex(pattern);
于 2013-05-21T12:33:29.170 に答える
0

正規表現なしでこれを行う必要があります:

    var str = "TEST^AB^^HOUSE-1234~STR2255";
    var result = (str.StartsWith("TEST^AB^^") && str.IndexOf('~') > -1) 
                ? new string(str.Skip(9).TakeWhile(c=>c!='~').ToArray())
                : null;
    Console.WriteLine(result);
于 2013-05-21T12:34:03.890 に答える