用于在Username之后提取文本的正则表达式

时间:2017-01-29 16:51:17

标签: php regex preg-match

寻找preg_match_all来提取文本中找到的任何用户名。示例文本是' last_name,first_name用户名:bjorge,用户名philip kardashian,kim用户名:mercury,freddie'

我试图在本文中捕获的内容:

-bjorge

-philip

-mercury

我尝试了这个,但没有去: preg_match_all("/(Username:|Username)\s+?(\S+)/i", $input_lines, $output_array);

这是我从我尝试过的输出。

array(30=>last_name, first_name 1=>last_name 2=>first_name) array(30=>bjorge, philip 1=>bjorge 2=>philip) array(30=>kardashian, kim 1=>kardashian 2=>kim) array(30=>mercury, freddie 1=>mercury 2=>freddie)

1 个答案:

答案 0 :(得分:1)

在字符串'last_name, first_name Username:bjorge, Username philip kardashian, kim username: mercury, freddie'中,bjorge之前没有空格。

使用:

preg_match_all("/(Username:|Username)\s*(\S+)/i", $input_lines, $output_array);
//                              here __^

我简化了你的正则表达式:

$in = 'last_name, first_name Username:bjorge, Username philip kardashian, kim username: mercury, freddie';
preg_match_all("/Username:?\s*(\S+)/i", $in, $out);
print_r($out);

<强>输出:

Array
(
    [0] => Array
        (
            [0] => Username:bjorge,
            [1] => Username philip
            [2] => username: mercury,
        )

    [1] => Array
        (
            [0] => bjorge,
            [1] => philip
            [2] => mercury,
        )

)