我试图有一个正则表达式测试器,用户将一个正则表达式参数(如 [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/