Php 如何编写和测试正则表达式?

Php 如何编写和测试正则表达式?,php,regex,testing,wizard,Php,Regex,Testing,Wizard,他们是否有为PHP创建和测试正则表达式的向导或工具,因为这非常困难:(?)? 谢谢:)是一款非常流行的应用程序。它也需要40美元,并且只能在Windows上运行 有关强大的免费替代方案,请参阅。是一个很好的工具,可以将正则表达式可视化为状态机—我发现它有时很有用 Python还允许您使用它,如果您学会阅读它,这会很有帮助。我通常在测试正则表达式时使用它。您也可以尝试,它可以方便地帮助您找出表达式,甚至可以生成相关的PHP代码。反复试验 而print\r有强大的功能。离线 是一个很棒的免费离线正

他们是否有为PHP创建和测试正则表达式的向导或工具,因为这非常困难:(?)? 谢谢:)

是一款非常流行的应用程序。它也需要40美元,并且只能在Windows上运行

有关强大的免费替代方案,请参阅。

是一个很好的工具,可以将正则表达式可视化为状态机—我发现它有时很有用

Python还允许您使用它,如果您学会阅读它,这会很有帮助。

我通常在测试正则表达式时使用它。您也可以尝试,它可以方便地帮助您找出表达式,甚至可以生成相关的PHP代码。

反复试验

print\r

有强大的功能。离线

  • 是一个很棒的免费离线正则表达式工具,我经常使用
  • 我也喜欢,但它要40美元,而且我很便宜

使用示例数据进行单元测试。创建两个数组,一个带有匹配数据,另一个带有非匹配数据(如果有必要),以测试边缘情况。

我总是使用这个:

我非常喜欢,它简单、清晰,不需要安装,并且可以在线免费使用。

这里是另一个用于Java的在线正则表达式测试仪:


在线。。。有一个带有js/pcre/posix实现的ajax正则表达式检查器,可以在键入时进行检查。。太酷了

是免费的Windows程序,它对正在分析的正则表达式给出了很好的分解和解释


有关可以直接从浏览器运行的在线工具,请参阅。

我以前使用过Regex Coach。但由于它是基于Perl的,而且大多数时候我都在测试.NET正则表达式,所以我现在使用它。

试错成功

因为我花了时间去真正地学习它,而不是依赖其他的东西来帮我


这同样适用于任何语言/工具-花一点时间学习语法和一般精神,你会比依赖intellisense、代码提示等更有效率。

我喜欢emacs re builder

我已经编写了自己的工具:。与许多其他基于web的工具不同,此工具可以将正则表达式分解为令牌,并描述每个令牌的作用。它非常适合于检查新的表达式,或者检查您很久以前编写但不太记得的表达式。

既然您正在谈论PHP,您可能会对它感兴趣。它是一个工具,不是专门用来分解正则表达式(您已经列出了很多正则表达式),而是用来对它们进行基准测试。由于它相当通用,您还可以比较非正则表达式解决方案,因为本机字符串函数通常更快。此外,它还允许您针对多个主题(目标)进行基准测试。希望您觉得它有用。

我正在使用单元测试。通过这种方式,我可以逐步增加我的正则表达式,确保我测试的第一个案例仍然通过。如果我必须修改它,我有我所有的测试来支持我

Regex Buddy太过分了($40),只能在Windows上使用。也许在2009年,这是一个不错的选择

现在我们有了免费的强大的在线工具来构建和测试正则表达式。是其中之一:

  • 用于选择RE引擎(PCRE、JavaScript、Python)
  • 给火柴上色
  • 动态解释regexp
  • 有一个调试器
  • 可以创建到regexp游乐场的永久链接

更多的regexp测试工具在。

在线测试Regx使用此网站,如果您的Regx在这个网站上工作,那么您可以使用preg_match()函数在writecodeonline.com上检查它的php。

我编写了一个python库来完成这项工作,它正在


这听起来是构建正则表达式最痛苦的方法。相关问题:RegexBuddy太好了,我无法用300个字符来表达它。在几天内付清我为它支付的任何费用(30美元或50美元)。听,听!(而且regex语言并不像乍看起来那么复杂……我第一次尝试时就掌握了它们,比没有掌握的要多得多。)我在第三次尝试时掌握了它们,但掌握的频率要高得多,但我会在几年后与您联系。虽然我喜欢手动驱动的工具,如RegExpBuddy,以及IntelliJ可用的插件,使用一些单元测试来增加表达式保持有效的长期机会总是一个好主意。这是一个基于Flash的糟糕工具。幸运的是它现在死了。比RegexPal强大得多。
text = 'so foo is the opposite of bar but without foo there is no bar?'
exp = '(foo).*?(bar)'
searched = cre.research(exp, text)
print(searched)