为了账号安全,请及时绑定邮箱和手机立即绑定

你如何调试正则表达式?

你如何调试正则表达式?

动漫人物 2019-09-18 19:55:25
正则表达式可能变得非常复杂。缺少空白区域使他们难以阅读。我无法通过调试器使用正则表达式。那么专家如何调试复杂的正则表达式呢?
查看完整描述

3 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

您购买RegexBuddy并使用其内置的调试功能。如果你一年两次使用正则表达式,你就可以及时将这笔钱及时存起来。RegexBuddy还将帮助您创建简单和复杂的正则表达式,甚至可以为您生成各种语言的代码。

//img1.sycdn.imooc.com//5d821b4b0001d6dc09600720.jpg

此外,根据开发人员的说法,当与WINE一起使用时,这个工具在Linux上几乎完美运行。


查看完整回答
反对 回复 2019-09-18
?
湖上湖

TA贡献2003条经验 获得超2个赞

使用Perl 5.10 , use re 'debug';. (或者debugcolor,我无法在Stack Overflow上正确格式化输出。)


$ perl -Mre = debug -e'“foobar”=〜/(。)\ 1 /'

编译REx“(。)\ 1”

最终计划:

   1:OPEN1(3)

   3:REG_ANY(4)

   4:关闭1(6)

   6:REF1(8)

   8:结束(0)

明娜1

将REx“(。)\ 1”与“foobar”匹配

   0 <> <foobar> | 1:OPEN1(3)

   0 <> <foobar> | 3:REG_ANY(4)

   1 <f> <oobar> | 4:CLOSE1(6)

   1 <f> <oobar> | 6:REF1(8)

                                  失败...

   1 <f> <oobar> | 1:OPEN1(3)

   1 <f> <oobar> | 3:REG_ANY(4)

   2 <fo> <obar> | 4:CLOSE1(6)

   2 <fo> <obar> | 6:REF1(8)

   3 <foo> <bar> | 8:END(0)

匹配成功!

释放REx:“(。)\ 1”

此外,您可以向正则表达式添加空格和注释,以使它们更具可读性。在Perl中,这是使用/x修饰符完成的。有pcre,有PCRE_EXTENDED旗帜。


"foobar" =~ /

    (.)  # any character, followed by a

    \1   # repeat of previously matched character

/x;


pcre *pat = pcre_compile("(.)  # any character, followed by a\n"

                         "\\1  # repeat of previously matched character\n",

                         PCRE_EXTENDED,

                         ...);

pcre_exec(pat, NULL, "foobar", ...);


查看完整回答
反对 回复 2019-09-18
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我使用Kodos - Python正则表达式调试器:


Kodos是一个Python GUI实用程序,用于为Python编程语言创建,测试和调试正则表达式。Kodos应该帮助任何开发人员高效,轻松地在Python中开发正则表达式。由于Python的正则表达式实现基于PCRE标准,因此Kodos应该使其他编程语言的开发人员受益,这些编程语言也遵循PCRE标准(Perl,PHP等...)。


(......)

//img1.sycdn.imooc.com//5d821b6500015ae505480573.jpg

在Linux,Unix,Windows,Mac上运行。


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 506 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信