0

わかりましたので、これを行う方法について何時間も検索してきました:

ユーザーがボックスに次のテキストを追加し、[変換] をクリックします。

1 127.0.0.1:8080 127.0.0.1 のランダムなジャンク
2 255.255.255.255:80 ランダムなジャンクは行ごとに異なります
www.example.com

このコードの使用:

outputBox.Text = Regex.Replace(inputBox.Text, "^[[0-9]{1,3},[.],[0-9]{1,3},[.],[0-9]{1,3},[.],[0-9]{1,3},[:],[0-9]{1,5}]+", ""); 

これは次のようになります。

127.0.0.1:8080
255.255.255.255:80
98.76.54.32:1010

しかし代わりに、出力ボックスには入力されたものとまったく同じものが表示されます

必要なすべてのテキストに共通する唯一のことは、
1 ~ 3 桁の後にピリオド (x3) が続き、1 ~ 3 桁の後にコロンが続き、その後に 1 ~ 5 桁の数字が続くことです。

また、コードの多くのバリエーションを試しました (コンマの削除、ピリオドの括弧の削除など)。どれも機能しません。

私が間違っていることについてのアイデアはありますか?

4

2 に答える 2

2

なぜ置き換えて""意味がないのか、より良いロジックはIP:portasRegex Groupをキャプチャしてから、一致を最初のグループに置き換えることができます$1

outputBox.Text = Regex.Replace(inputBox.Text, @"\d+ ((?:[0-9]{1,3}\.){3}[0-9]{1,3}:\d{1,5}).+", "$1\r\n")
于 2013-03-04T05:55:09.053 に答える
0
        string haystack = "127.0.0.1:8080 this is some ip and port 127.0.0.1";
        Regex needle = new Regex("[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}([:][0-9]{2,5})?");

        string output = String.Empty;
        string[] lines = haystack.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        foreach (string line in lines)
        {
            if (needle.IsMatch(line))
            {
                output += needle.Match(line).ToString() + Environment.NewLine;
            }
        }
        // output 127.0.0.1:8080
于 2013-03-04T05:55:00.367 に答える