Asp.Net 如何获取正则表达式的字符串结果,而不仅仅是一个

标签 asp.net regex

我试图有一个正则表达式测试器,用户将一个正则表达式参数(如 [AZ])写入文本框,供用户测试正则表达式是否好我想显示正则表达式的结果,所以我做了更多的文本框,他可以写一个短语进行测试。

<div class="container">
            <div class="row">
                <div class="col-md-4">
                    <div class="form-group">
                        <asp:Label runat="server" ID="LblRegex" Text="Regex:">
                        <asp:TextBox runat="server" ID="txbRegex"></asp:TextBox>
                    </asp:Label>
                    </div>
                    
                    <div class="col-md-4">
                        <div class="form-group">
                            <asp:Label ID="LblRegexTester" runat="server" Text="Teste o seu Regex:">
                                <asp:TextBox runat="server" ID="txbRegexTest"></asp:TextBox>
                            </asp:Label>
                        </div>
                    </div>

                    <div class="col-md-4">
                        <div class="form-group">
                            <asp:Label ID="LblResultRegex" runat="server">
                                <asp:TextBox runat="server" ID="txbResultRegex"></asp:TextBox>
                            </asp:Label>
                        </div>
                    </div>

                    <div class="row">
                        <div class="col">
                            <asp:Button runat="server" ID="btnTest" OnClick="btnTest_Click" />
                        </div>
                    </div>

                </div>
            </div>
        </div>


 protected void RegexMaker(string Regex, string RegexTestText)
    {
        char RegexResults;
        Regex rg = new Regex(Regex);

        MatchCollection MatchedRegex = rg.Matches(RegexTestText.ToString());


        for (int count = 0; count < MatchedRegex.Count; count++)
        {
            //txbResultRegex.Text = count.ToString();


            txbResultRegex.Text = MatchedRegex[count].Value.ToString();
        }


        


    }

    protected void btnTest_Click(object sender, EventArgs e)
    {
        string regex = txbRegex.Text;
        string regexTestText = txbRegexTest.Text;
        RegexMaker(regex, regexTestText);
    }
我在这里遇到的问题是它只产生一个字符。我能做些什么来显示它得到的所有匹配项。

最佳答案

您每次都使用 txbResultRegex.Text 中的新匹配值覆盖 txbResultRegex.Text = MatchedRegex[count].Value.ToString(); 属性。
您需要获取所有匹配项并显示它们,例如,使用 , 或其他一些分隔符。下面是一个例子:

protected void RegexMaker(string Pattern, string RegexTestText)
{
    var MatchedRegex = Regex.Matches(RegexTestText.ToString(), Pattern);
    txbResultRegex.Text = $"Count: {count.ToString()} Matches: {string.Join(", ", MatchedRegex.Cast<Match>().Select(x=>x.Value))}";
}

关于Asp.Net 如何获取正则表达式的字符串结果,而不仅仅是一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68375978/

相关文章:

regex - 我需要一个正则表达式来匹配以两个特定单词之一结尾的句子

c# - 如何规范化/规范化正则表达式模式?

c# - 使用 C# 以编程方式添加新的颠覆用户

c# - 检测*所有*表情符号

正则表达式 : validating a double/float

c# - 如何使用 URL 将数据从 javascript 发送到 ASP.NET MVC Controller

c# - 我希望修复此正则表达式以分别匹配两个文本 block

c# - 使用 Response.TransmitFile() 下载 .xlsx 文件

javascript - 使用 javascript 打印时不出现 Ajax 评级控件

html - 跨域不起作用有错误请求必须是 POST