测试正则表达式的推荐方法?

Rob*_*rio 7 regex linux

我是正则表达式的新手,我已经能够通过试验和错误编写一些代码,所以尝试了一些程序来帮助我编写表达式,但程序比正则表达式本身更难理解.有推荐的程序吗?我在Linux下完成大部分编程.

Sin*_*nür 7

试试YAPE :: Regex :: Explain for Perl:

#!/usr/bin/perl

use strict;
use warnings;

use YAPE::Regex::Explain;

print YAPE::Regex::Explain->new(
    qr/^\A\w{2,5}0{2}\S \n?\z/i
)->explain;
Run Code Online (Sandbox Code Playgroud)

输出:

The regular expression:

(?i-msx:^\A\w{2,5}0{2}\S \n?\z)

matches as follows:

NODE                     EXPLANATION
----------------------------------------------------------------------
(?i-msx:                 group, but do not capture (case-insensitive)
                         (with ^ and $ matching normally) (with . not
                         matching \n) (matching whitespace and #
                         normally):
----------------------------------------------------------------------
  ^                        the beginning of the string
----------------------------------------------------------------------
  \A                       the beginning of the string
----------------------------------------------------------------------
  \w{2,5}                  word characters (a-z, A-Z, 0-9, _)
                           (between 2 and 5 times (matching the most
                           amount possible))
----------------------------------------------------------------------
  0{2}                     '0' (2 times)
----------------------------------------------------------------------
  \S                       non-whitespace (all but \n, \r, \t, \f,
                           and " ")
----------------------------------------------------------------------
                           ' '
----------------------------------------------------------------------
  \n?                      '\n' (newline) (optional (matching the
                           most amount possible))
----------------------------------------------------------------------
  \z                       the end of the string
----------------------------------------------------------------------
)                        end of grouping
----------------------------------------------------------------------


Sha*_*awn 5

RegexPal是一款优秀的免费JavaScript正则表达式测试程序.因为它使用JavaScript正则表达式引擎,所以它没有一些更高级的正则表达式功能,但它适用于许多正则表达式.我最想念的功能是lookbehind断言.


too*_*php 5

大多数正则表达式错误分为三类:

  • 细微的遗漏^-在开头省略 ' ' 或$在结尾省略 ' ',在*应该使用 ' 的地方使用 ' +' - 这些只是初学者的错误,但有缺陷的正则表达式仍然通过所有自动化测试是很常见的。

  • 意外的成功- 正则表达式的一部分完全错误,并且注定会在 99% 的现实世界使用中失败,但纯粹是运气不好,它成功地通过了您编写的六个自动化测试。

  • 太成功了——正则表达式的一部分匹配的内容比你想象的要多得多。例如,标记[^., ]*还将匹配\rand \n,这意味着您的正则表达式现在可以匹配多行文本,即使您将其包装在^and中$

正确学习正则表达式确实是无可替代的。阅读有关正则表达式引擎的参考手册,并使用 Regex Buddy 等工具来试验并熟悉所有功能,尤其要注意它们可能表现出的任何特殊或不寻常的行为。如果你正确地学习了正则表达式,你将避免上面提到的大多数错误,并且你将知道如何编写少量的自动化测试,这些测试可以保证所有的边缘情况,而不会过度测试明显的东西(确实匹配[A-Z]每个字母) A 和 A 之间?我最好编写 26 个单元测试变体来确定!)。

如果您没有完全学习正则表达式,您将需要编写大量的自动化测试来证明您神奇的正则表达式是正确的。


Rob*_*t P 3

不幸的是,如果您运行的是 Linux,您将无法访问最好的之一:Regex Buddy

RegexBuddy 是您使用正则表达式的完美伴侣。轻松创建与您想要的完全匹配的正则表达式。清楚地理解其他人编写的复杂正则表达式。快速测试示例字符串和文件上的任何正则表达式,防止实际数据出现错误。通过逐步执行实际匹配过程,无需猜测即可进行调试。使用正则表达式,源代码片段会根据您的编程语言的具体情况自动调整。收集并记录正则表达式库以供将来重用。通过文件和文件夹进行 GREP(搜索和替换)。将 RegexBuddy 与您最喜欢的搜索和编辑工具集成以进行即时访问。(来自他们的网站)