tea/regex

用于构建和操作正则表达式的简洁界面。内置PCRE库(preg_*函数)的轻量级包装。

dev-master / 0.1.0.x-dev 2017-01-09 00:52 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:58:18 UTC


README

PHP 内置正则表达式库 (PCRE),它提供了 preg_* 函数。大多数情况下,这些函数需要一些奇怪的模式,例如通过引用传递变量和将 falsenull 值视为错误。为了使使用正则表达式更加友好,tea/regexpreg_* 函数提供了一个干净的接口,同时提供了一个可读的 API 用于构建正则表达式。

基本用法。

要构建和操作正则表达式,tea\regex 提供了一些灵活的组件。

  • 代表正则表达式模式的 RegularExpression 对象,并提供各种正则表达式方法 (match(), replace(), split())
  • 提供构建正则表达式的人读 API 的 Builder
  • 提供 RegularExpression 对象静态接口的 Regex 静态外观。

入门。

要执行正则表达式函数,如 matchreplacesplit,我们需要创建一个 RegularExpression 实例。有各种方法可以做到这一点。

use Tea\Regex\Regex;
use function Tea\Regex\re;
use Tea\Regex\RegularExpression;

// 1. Creating directly.
$regex = new RegularExpression('^\d+-([A-Za-z]+)-([A-Za-z]+)');
$matches = $regex->match('254-foo-bar-baz'); // 'Tea\Regex\Result\Matches' object

// 2. Using the Regex static facade.
$regex = Regex::create('^\d+'); // 'Tea\Regex\RegularExpression' object
$replaced = $regex->replace('x', '254-foo-bar-baz'); // 'Tea\Regex\Result\Replacement' object

// 3. Using the re() function.
$regex = re('-'); // 'Tea\Regex\RegularExpression' object
$result = $regex->split('254-foo-bar-baz'); // array('254', 'foo', 'bar', 'baz')

注意,上述正则表达式模式中缺少分隔符和修饰符?是的。如果提供的模式包含分隔符和/或任何修饰符,上述方法将抛出错误。在上面的示例中,使用 / 作为分隔符,设置 u 修饰符。默认情况下,分隔符是 /,修饰符是 u

要设置要使用的分隔符和修饰符

// Compiles to '#^ \d+ - ([A-Za-z]+) - ([A-Za-z]+)#ix'
$regex = new RegularExpression('^ \d+ - ([A-Za-z]+) - ([A-Za-z]+)', 'ix', '#');

// Compiles to '|^\d+|u'
$regex = Regex::create('^\d+', null, '|');

// Compiles to '/-/'
$regex = re('-', '', '/');

使用完整的正则表达式模式创建。

$regex = RegularExpression::from('/^\d+/u');
Regex::from(...);
Regex::match(...);
Regex::replace(...);

匹配

...

匹配所有

...

替换

...

替换回调

...

过滤

...

匹配

...

替换

...

分割

...