猿问

你如何调试正则表达式?

正则表达式可能变得非常复杂。缺少空白区域使他们难以阅读。我无法通过调试器使用正则表达式。那么专家如何调试复杂的正则表达式呢?



动漫人物
浏览 516回答 3
3回答

偶然的你

您购买RegexBuddy并使用其内置的调试功能。如果你一年两次使用正则表达式,你就可以及时将这笔钱及时存起来。RegexBuddy还将帮助您创建简单和复杂的正则表达式,甚至可以为您生成各种语言的代码。此外,根据开发人员的说法,当与WINE一起使用时,这个工具在Linux上几乎完美运行。

湖上湖

使用Perl 5.10 , use re 'debug';. (或者debugcolor,我无法在Stack Overflow上正确格式化输出。)$ perl -Mre = debug -e'“foobar”=〜/(。)\ 1 /'编译REx“(。)\ 1”最终计划:&nbsp; &nbsp;1:OPEN1(3)&nbsp; &nbsp;3:REG_ANY(4)&nbsp; &nbsp;4:关闭1(6)&nbsp; &nbsp;6:REF1(8)&nbsp; &nbsp;8:结束(0)明娜1将REx“(。)\ 1”与“foobar”匹配&nbsp; &nbsp;0 <> <foobar> | 1:OPEN1(3)&nbsp; &nbsp;0 <> <foobar> | 3:REG_ANY(4)&nbsp; &nbsp;1 <f> <oobar> | 4:CLOSE1(6)&nbsp; &nbsp;1 <f> <oobar> | 6:REF1(8)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 失败...&nbsp; &nbsp;1 <f> <oobar> | 1:OPEN1(3)&nbsp; &nbsp;1 <f> <oobar> | 3:REG_ANY(4)&nbsp; &nbsp;2 <fo> <obar> | 4:CLOSE1(6)&nbsp; &nbsp;2 <fo> <obar> | 6:REF1(8)&nbsp; &nbsp;3 <foo> <bar> | 8:END(0)匹配成功!释放REx:“(。)\ 1”此外,您可以向正则表达式添加空格和注释,以使它们更具可读性。在Perl中,这是使用/x修饰符完成的。有pcre,有PCRE_EXTENDED旗帜。"foobar" =~ /&nbsp; &nbsp; (.)&nbsp; # any character, followed by a&nbsp; &nbsp; \1&nbsp; &nbsp;# repeat of previously matched character/x;pcre *pat = pcre_compile("(.)&nbsp; # any character, followed by a\n"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"\\1&nbsp; # repeat of previously matched character\n",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PCRE_EXTENDED,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;...);pcre_exec(pat, NULL, "foobar", ...);

小唯快跑啊

我使用Kodos - Python正则表达式调试器:Kodos是一个Python GUI实用程序,用于为Python编程语言创建,测试和调试正则表达式。Kodos应该帮助任何开发人员高效,轻松地在Python中开发正则表达式。由于Python的正则表达式实现基于PCRE标准,因此Kodos应该使其他编程语言的开发人员受益,这些编程语言也遵循PCRE标准(Perl,PHP等...)。(......)在Linux,Unix,Windows,Mac上运行。
随时随地看视频慕课网APP
我要回答