【正则表达式测试工具】正则表达式 VerbalExpressionsPhp使用例子

时间:2019-06-04  来源:正则表达式  阅读:

该类库是jehna/VerbalExpressions的php版本。

这货的竟然通过链式方法把正则给语义化了。。。我表示很愤慨啊。。。

安装

 代码如下

加入composer.json

{
    "require": {
        ...,
        "markwilson/VerbalExpressionsPhp": "dev-master"
    }
}

使用

 代码如下  
require_once "vendor/autoload.php";
 
use MarkWilson\VerbalExpression;
use MarkWilson\VerbalExpression\Matcher;
 
// 初始化VerbalExpression实例
$verbalExpression = new VerbalExpression();
 
// URL地址匹配
$verbalExpression->startOfLine()
                 ->then("http")
                 ->maybe("s")
                 ->then("://")
                 ->maybe("www.")
                 ->anythingBut(" ")
                 ->endOfLine();
 
// 编译表达式 - 返回: ^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$
$verbalExpression->compile();
 
// 执行匹配
preg_match($verbalExpression, "http://www.111cn.net"); // 返回 1
// 或
$matcher = new Matcher();
$matcher->isMatch($verbalExpression, "http://www.google.com"); // 返回 true

嵌套表达式

 代码如下  
$innerExpression = new VerbalExpression();
$innerExpression->word();
 
$outerExpression = new VerbalExpression();
$outerExpression->startOfLine()
                ->find($innerExpression)
                ->then($innerExpression)
                ->endOfLine();
 
// 返回 ^(\w+)(\w+)$
$outerExpression->compile();

禁用子模式捕获

默认情况下,子匹配规则可以被获取,并返回匹配的数组。

 代码如下  
// 禁用获取子匹配规则
$verbalExpression->disableSubPatternCapture()->word(); // (?:\w+)
// 或
$verbalExpression->word(false); // (?:\w+)

这样做只会影响后续增加的表达式;任何已经添加的匹配规则不会受到影响。这里允许禁用和启用组。

 代码如下

 
// 相当于 (\w+)(?:\w+)(?:\w+)(\w+)
$verbalExpression->word()
                 ->disableSubPatternCapture()
                 ->word()
                 ->word()
                 ->enableSubPatternCapture()
                 ->word();

【正则表达式测试工具】正则表达式 VerbalExpressionsPhp使用例子

http://m.bbyears.com/aspjiaocheng/53145.html

推荐访问:正则表达式在线测试 正则表达式语法 正则表达式生成器 正则表达式匹配任意字符 正则表达式判断是否为数字 正则表达式测试
相关阅读 猜你喜欢
本类排行 本类最新