【解決方法】文字列を正規表現する方法


パラメータの1つが以下のようなjsonオブジェクトがあります

"https://d1swzmic55peuz.cloudfront.net/7.0.1-5xTesi.101/",

また

"https://d1swzmic44peuz.cloudfront.net/7.0.0-bathrolls.103/"

上記のすべてから、このようなものが必要です 7.0.1.101 また
7.0.0.103

私が試したこと:

サブストリングを使用して / の前のテキストを削除してから正規表現を削除しようとしましたが、値を除外することはできませんでした。

C#
Configuration resource = JsonConvert.DeserializeObject<configuration>(content);
string[] line = resource.ResourceRoot.Split('/');
var regex = new Regex(@"[\d\.]"); var matches = regex.Matches(line[3]);
string version = string.Empty;
foreach (Match match in matches)
{ 
     version = string.Join(version, match);
}

解決策 1

これを試して:

C#
string reg = @"(?<=https://.*?/)(\d+\.\d+\.\d+)(?:[^\.]+?)(\.\d+)";
string inp = @"https://d1swzmic55peuz.cloudfront.net/7.0.1-5xTesi.101/";
Match m = Regex.Match(inp, reg);
if (m.Success && m.Groups.Count == 3)
    {
    Console.WriteLine($"{m.Groups[1].Value}{m.Groups[2].Value}");
    }

正規表現を使用する場合は、次のコピーを入手してください。 特急[^] – 無料で、正規表現を調べて生成します。

解決策 2

私は少し異なるパターンを使用します:

(\d+\.\d+\.\d+)(?>\-.*?\.)(\d+)

見る: regex101: 正規表現のビルド、テスト、およびデバッグ[^]

コメント

タイトルとURLをコピーしました