tea / regex
用于构建和操作正则表达式的简洁界面。内置PCRE库(preg_*函数)的轻量级包装。
dev-master / 0.1.0.x-dev
2017-01-09 00:52 UTC
Requires
- php: >=5.4
- gherkins/regexpbuilderphp: 0.*.*
- tea/contracts: ~0.1.0
- tea/future: ~0.1.0
Requires (Dev)
- phpbench/phpbench: @dev
- phpunit/phpunit: ~5.0
This package is not auto-updated.
Last update: 2024-09-28 19:58:18 UTC
README
PHP 内置正则表达式库 (PCRE
),它提供了 preg_*
函数。大多数情况下,这些函数需要一些奇怪的模式,例如通过引用传递变量和将 false
或 null
值视为错误。为了使使用正则表达式更加友好,tea/regex
为 preg_*
函数提供了一个干净的接口,同时提供了一个可读的 API 用于构建正则表达式。
基本用法。
要构建和操作正则表达式,tea\regex
提供了一些灵活的组件。
- 代表正则表达式模式的
RegularExpression
对象,并提供各种正则表达式方法 (match()
,replace()
,split()
)。 - 提供构建正则表达式的人读 API 的
Builder
。 - 提供
RegularExpression
对象静态接口的Regex
静态外观。
入门。
要执行正则表达式函数,如 match
、replace
、split
,我们需要创建一个 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(...);
匹配
...
匹配所有
...
替换
...
替换回调
...
过滤
...
匹配
...
替换
...
分割
...