vincentvanwijk / fluent-regex
一个用于流畅创建正则表达式的包
v0.0.2-alpha
2023-03-18 14:29 UTC
Requires
- php: ^8.1
- illuminate/contracts: >9.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.9
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-09 02:26:35 UTC
README
安装
您可以通过composer安装此包
composer require vincentvanwijk/fluent-regex
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag=":fluent-regex-config"
使用方法
首先在FluentRegex类上调用create函数。
它需要一个字符串作为参数,该字符串是要执行正则表达式的对象。
第二个参数是分隔符,默认为'/'
。
use VincentVanWijk\FluentRegex\Facades\FluentRegex; $fluentRegex = FluentRegex::create("foo bar baz");
您可以通过在FluentRegex对象上链式调用方法来向正则表达式添加令牌。
/foo\s[bar baz]+/
$fluentRegex->exactly("foo") ->whiteSpace() ->anyCharacterOf('bar baz') ->oneOrMoreTimes();
需要转义的字符将自动进行转义。
/regex\!/
$fluentRegex->exactly("regex!")
大多数方法都可以使用not
修饰符进行否定。
/[a-zA-Z]/
$fluentRegex->letter();
/[^a-zA-Z]/
$fluentRegex->not->letter();
分组
例如捕获组之类的分组结构需要一个匿名函数作为参数。
匿名函数需要一个FluentRegex对象作为参数。
在这个对象上,您可以继续链式调用方法来创建捕获组的子模式。
/foo (bar baz)/
$fluentRegex->exactly("foo ") ->capture(function (FluentRegex $regex) { return $regex->exactly('bar') ->whiteSpace() ->exactly('baz') })
返回结果
您可以调用match()
方法来返回一个包含匹配项的数组。
第一个索引[0]
包含匹配完整模式的文本,第二个索引[1]
将包含匹配第一个子模式的文本,依此类推。
$fluentRegex->match();
或者调用matchAll()
方法来返回一个包含所有匹配项的多维数组。第一个索引[0]
是一个包含完整模式匹配项的数组,第二个索引[1]
是匹配第一个子模式的字符串数组,依此类推。
$fluentRegex->matchAll();
要获取正则表达式的字符串表示形式,请调用
$fluentRegex->get();
测试
composer test
变更日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。