php - preg_match_all()不匹配所有可能的出现

原文 标签 php regex string preg-match-all

preg_match_all() not matching all possible occurrences

I have binary pattern "10000101001" and I want to match string having 0 in starting and ending 1. So for above given example there should be 3 possible match 100001, 101, 1001.

Below is the sample code I am trying:

function solution() {
    $length = 0;
    $decStr = "10000101001";
    $pattern = "/[1][^1]0*[1]/";
    preg_match_all($pattern, $decStr, $matches);
    echo "<pre>";
    print_r($matches);
    echo "</pre>";
}

This gives output as

Array
(
    [0] => Array
        (
            [0] => 100001
            [1] => 1001
        )

)
Answer

Positive lookahead

/(?=(1[^1]+1))/

Read this: http://www.regular-expressions.info/lookaround.html

翻译

我有二进制模式“ 10000101001”,我想匹配在开始和结束1处具有0的字符串。因此,对于上面给出的示例,应该有3种可能的匹配100001、101、1001。

以下是我尝试的示例代码:

function solution() {
    $length = 0;
    $decStr = "10000101001";
    $pattern = "/[1][^1]0*[1]/";
    preg_match_all($pattern, $decStr, $matches);
    echo "<pre>";
    print_r($matches);
    echo "</pre>";
}


这给出了输出

Array
(
    [0] => Array
        (
            [0] => 100001
            [1] => 1001
        )

)
最佳答案
积极向前

/(?=(1[^1]+1))/


阅读此内容:http://www.regular-expressions.info/lookaround.html
相关推荐

php - 在本地数据库中存储Amazon API数据

php - PHP表格检查数组mysql中的复选框值时查询?

php - 无法从数组获取正确的值

php - cakePHP在模型中使用请求/身份验证数据的3个最佳实践(基于帐户的云服务)

php - 什么数据类型可用于在mysql中放置标志(布尔值)?

javascript - 尝试将数据从.php文件传递到.js文件

php - 更改子菜单时如何更改网页背景?

php - Symfony2:如何避免数据库中已经存在重复的实体?

php - Eclipse中的PHP 7调试器设置

javascript - 访问URL参数-PHP和Angular.js