我正在尝试在 C# 中创建一个正则表达式,它将匹配类似的字符串"�"
,但我的正则表达式在第一次匹配时停止,我想匹配整个字符串。
我一直在尝试很多方法来做到这一点,目前,我的代码如下所示:
string sPattern = @"/&#\d{2};/";
Regex rExp = new Regex(sPattern);
MatchCollection mcMatches = rExp.Matches(txtInput.Text);
foreach (Match m in mcMatches) {
if (!m.Success) {
//Give Warning
}
}
并且也尝试过lblDebug.Text = Regex.IsMatch(txtInput.Text, "(&#[0-9]{2};)+").ToString();
,但它也只找到第一个匹配项。
有小费吗?
编辑:
我正在寻找的最终结果是像现在这样的字符串�&#
被标记为不正确,因为只进行了第一个匹配,我的代码将其标记为正确的字符串。
第二次编辑:
我把我的代码改成了这个
string sPattern = @"&#\d{2};";
Regex rExp = new Regex(sPattern);
MatchCollection mcMatches = rExp.Matches(txtInput.Text);
int iMatchCount = 0;
foreach (Match m in mcMatches) {
if (m.Success) {
iMatchCount++;
}
}
int iTotalStrings = txtInput.Text.Length / 5;
int iVerify = txtInput.Text.Length % 5;
if (iTotalStrings == iMatchCount && iVerify == 0) {
lblDebug.Text = "True";
} else {
lblDebug.Text = "False";
}
这按我预期的方式工作,但我仍然认为这可以以更好的方式实现。
第三次编辑:正如@devundef 建议的那样,表达式"^(&#\d{2};)+$"
完成了我一直在跳的工作,因此,我的最终代码如下所示:
string sPattern = @"^(&#\d{2};)+$";
Regex rExp = new Regex(sPattern);
lblDebug.Text = rExp.IsMatch(txtInput.Text).ToString();
我总是忽略字符串字符(^ / $)的开始和结束。