basim/super-expressive-php

https://github.com/francisrstokes/super-expressive 的 PHP 版本

v1.0.3 2021-05-23 17:15 UTC

This package is auto-updated.

Last update: 2024-09-24 00:37:48 UTC


README

Latest Version on Packagist License Postcardware

PHP from Packagist Build Status Coverage Status Total Downloads

Super Expressive PHP

Super Expressive PHP 是一个 PHP 库,允许您用几乎自然语言的方式构建正则表达式 - 无需额外依赖,且代码量轻。

此库是 https://github.com/francisrstokes/super-expressive 的移植版

为什么?

正则表达式是一个非常强大的工具,但它的简洁和晦涩的词汇可能使得构建和与他人沟通变得具有挑战性。即使理解它们很好的开发者,几个月后再阅读自己的代码也可能会有困难!此外,它们不能以编程方式轻松创建和操作,从而关闭了整个动态文本处理的途径。

这就是 Super Expressive PHP 的作用所在。它提供了一种编程和可读性强的创建正则表达式的方式。它的 API 使用 流式接口构建模式,且完全不可变。它被构建来易于发现和预测

  • 属性和方法用简单英语描述它们的作用
  • 顺序很重要!量词在它们改变的事物之前指定,就像在英语中一样(例如 SuperExpressive::create()->exactly(5)->digit()
  • 如果你犯了错误,你会知道如何修复它。如果您的表达式无效,SuperExpressive 将引导您找到解决方案
  • 可以使用 子表达式 创建有意义的、可重用的组件

SuperExpressive 将那些在代码审查中出现的复杂且难以驾驭的正则表达式转化为可以被阅读、理解和 正确审查 的内容 - 并且可以被任何人维护!

要查看完整的 API 文档,请访问 https://github.com/francisrstokes/super-expressive

示例

以下示例识别并捕获类似于 0xC0D3 的 16 位十六进制数的值。

$myRegex = SuperExpressive::create()
  ->startOfInput()
  ->optional()->string('0x')
  ->capture()
    ->exactly(4)->anyOf()
      ->range('A', 'F')
      ->range('a', 'f')
      ->range('0', '9')
    ->end()
  ->end()
  ->endOfInput()
  ->toRegexString();

// Produces the following regular expression:
/^(?:0x)?([A-Fa-f0-9]{4})$/

安装

您可以通过 composer 安装此软件包

composer require bassim/super-expressive-php

明信片软件

您可以使用此软件包,但如果它进入您的生产环境,我非常感谢您从您的家乡寄给我一张明信片,说明您正在使用我的哪个软件包。

我的地址是:Bas, Random Studio, Westzaanstraat 10, 1013 NG 阿姆斯特丹,荷兰。