Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式匹配以大写字母开头的正则表达式_Php_Regex - Fatal编程技术网

PHP正则表达式匹配以大写字母开头的正则表达式

PHP正则表达式匹配以大写字母开头的正则表达式,php,regex,Php,Regex,听起来很简单,但我想不出来,请帮帮我 所以。。。我有以下数据的文件: Name: Santi Surname: Dore Name: Rob Surname: Doe and so on.. 我只需要匹配以“Name:”开头的整个部分。。。不是“姓: 以下是我现在正在使用的匹配方法: /Name(:)(.*)/i 它将匹配两者,但我只需要名称: 请不要建议任何其他查找方法,请帮助我使用正则表达式按照我所描述的方式进行操作。去掉I修饰符,这会使正则表达式不区分大小写 和/或,添加一些单词边界:

听起来很简单,但我想不出来,请帮帮我

所以。。。我有以下数据的文件:

Name: Santi
Surname: Dore
Name: Rob
Surname: Doe
and so on..
我只需要匹配以“Name:”开头的整个部分。。。不是“姓:

以下是我现在正在使用的匹配方法:

/Name(:)(.*)/i
它将匹配两者,但我只需要名称:


请不要建议任何其他查找方法,请帮助我使用正则表达式按照我所描述的方式进行操作。

去掉
I
修饰符,这会使正则表达式不区分大小写

和/或,添加一些单词边界:

/\bName(:) (.*)\b/

^
字符将与行首匹配:

/^Name(:)(.*)/
注意,我已经删除了
I
修饰符,这使得搜索不区分大小写

样本:

% cat ./test.php 
#!/usr/bin/env php
<?php

$regex = '/^Name(:)(.*)/';

$data = <<<EOD
Name: Santi
Surname: Dore
Name: Rob
Surname: Doe
and so on..
EOD;

foreach (explode("\n", $data, -1) as $line)
{
    if (preg_match($regex, $line, $matches))
    {
        printf("Found %s\n", $matches[2]);
    }
}


?>

% ./test.php
Found  Santi
Found  Rob
%cat./test.php
#!/usr/bin/env-php
%/test.php
找到桑蒂
找到罗布

使用
\s
处理空间

真管用!谢谢什么是/b\b请你解释一下,我知道我是不区分大小写的搜索,但是如果你在开始时删除i并添加^,它就不起作用了。@Santiago
/i
意味着
/Name/i
匹配“Name”的任何大小写变体,即“Name”、“Name”、“Name”等。这正是你不想要的
\b
是一个单词边界,包括空格、行尾、逗号等内容,即任何不是“单词字符”的内容。@Santiago我建议使用regexen并快速测试多种变体。非常欢迎。正则表达式可以很容易地解决许多复杂的问题。
/\b^(Name):\s[A-Z]+\s\b/