正则表达式测试器






3.50/5 (8投票s)
一个简单的正则表达式测试器,它允许针对标准正则表达式测试一个字符串,并在文本和图形格式中提供结果反馈,就像键入正则表达式或测试字符串一样。
引言
已经有很多具有许多高级功能的正则表达式测试器。 这是一个简单的测试器,它允许针对标准正则表达式测试一个字符串
,并在文本和图形格式中提供结果反馈,就像键入正则表达式或测试字符串
一样。
格式 / 环境
代码用 C# 以 Visual Studio 2003 格式 (.NET Framework 1.1) 编写。
用法
表单上有两个文本框允许输入 - 顶部用于输入正则表达式,底部允许针对正则表达式测试字符串
。 当更新任一文本框中的文本时,将针对正则表达式检查该文本是否匹配。 当修改某些文本时,将产生三种互斥的结果之一
字符串
与正则表达式模式匹配 - 在这种情况下,结果灯变为绿色字符串
与正则表达式模式不匹配(年份的第一位是字符) - 在这种情况下,结果灯变为红色- 正则表达式
字符串
无效(表达式中缺少右括号 ')') - 在这种情况下,结果灯变为橙色,并且错误详细信息列在输出文本框中
组
当编写正则表达式时,可以将匹配的字符串
表达式分成组,基于模式的哪些子部分包含在括号中(花括号、方括号 '(', ')',或者你想称呼它们为什么)。 这些组可以嵌套。 当成功匹配时,此程序只是获取顶级组,并将它们列在输入框的右侧。 请参阅第一个示例图像(用法结果 1 - 匹配)。 用于测试日期的简单粗略正则表达式具有整体组匹配(组 0,针对整个表达式),以及日期中每组数字的匹配。 这是因为日期表达式中的每个数字都包含在括号中。 例如,基于此,使用粗略表达式(没有人会这样做,因为有许多更好的日期检查表达式可用!),可以从组 2 中捕获文本作为月份。
示例代码
代码非常简单。 有一个方法 (CheckMatch()
) 用于检查要检查的文本是否与正则表达式匹配,并更新组和状态信息。 调用此方法的时间是
- 加载表单时,
- 更改正则表达式时,或
- 更改要检查的文本时。
这允许对上次操作的结果进行实时反馈。 这是(编辑过的)代码的相关部分,供复制粘贴者使用
using System.Text.RegularExpressions;
...
private void CheckMatch()
{
Regex rxImageCode;
try
{
// Load the regular expression
rxImageCode = new Regex(txtRegularExpression.Text);
}
catch (Exception ex)
{
// Invalid regular expression - indicate reason in
// output textbox
... notify of invalid regular expression ...
return;
}
// Test regular expression
Match rxMatch = rxImageCode.Match(txtTextToTest.Text);
// Was there a match?
if(rxMatch.Success)
{
... indicate success ...
/// Iterate over each of the (top level) groups
/// in the regular expression, as per the
/// parentheses: '(' and ')' characters, and list
/// the matching string to the right of the input
for(int i = 0; i < rxMatch.Groups.Count; i++)
{
// Do something with value of the group:
... rxMatch.Groups[i].Value
}
}
else
{
... indicate failure ...
}
}
缺点
正则表达式在键入时进行检查,因此几乎可以肯定的是,当键入时,在某个时刻正则表达式将无效。 一个 try
-catch
块用于检查有效正则表达式,因此第一次输入无效正则表达式时,会发生错误。 第一次发生错误时,响应速度会稍有延迟,因为错误是在与表单所有者相同的线程上处理的。 对于捕获到的后续错误,不会发生此延迟。 最后,我的一些变量以“图像代码”命名,因为我目前正在开发一个程序来批量更新我的照片和视频,并且我以特定格式为我的每个文件分配一个代码。
特点!
还有一个方便的链接到http://www.regexlib.com/CheatSheet.htm,它提供了正则表达式代码的快速参考。 我永远记不住所有代码 - 你能吗?
结论
使用此工具,可以快速编写正则表达式,并立即获得关于给定字符串
是否与该表达式匹配的反馈(该工具的编写更多是为了编写表达式,而不是测试现有表达式)。
历史
- 2005 年 9 月 8 日:初始发布