Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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,我想用正则表达式选择下面句子中的姓名(空格应忽略) 你能帮我找到正确的正则表达式吗 编辑:我的尝试是:(?应该可以 /Demandé par Dr :\s*(\w+)\s+(\w+)/ 您可以使用此正则表达式[a-zA-Z]+\s[a-zA-Z]+ 如果您只想查找第一个和第二个名称,但如果您想添加更多,只需添加\s[a-zA-Z]+,它意味着一个空格后面跟一个从a到z的字母。它可以是大写,也可以不是大写,加号意味着它可以有多个字母。我希望这对您有所帮助。如果您只想在冒号后面加上名称,您甚至不需

我想用正则表达式选择下面句子中的姓名(空格应忽略)

你能帮我找到正确的正则表达式吗

编辑:我的尝试是:
(?应该可以

/Demandé par Dr :\s*(\w+)\s+(\w+)/

您可以使用此正则表达式
[a-zA-Z]+\s[a-zA-Z]+


如果您只想查找第一个和第二个名称,但如果您想添加更多,只需添加
\s[a-zA-Z]+
,它意味着一个空格后面跟一个从a到z的字母。它可以是大写,也可以不是大写,加号意味着它可以有多个字母。我希望这对您有所帮助。

如果您只想在冒号后面加上名称,您甚至不需要正则表达式。只需在冒号上拆分字符串,获取第二个结果,然后修剪它

你提到你正在使用PHP,所以

$splitData = explode(':',$inputString);
$fullName = trim($splitData[1]);

工作完成。不需要正则表达式。

可以使用的正则表达式是:

/:\s*(\S+)\s+(\S+)/
这将匹配
及其后的所有内容,忽略空格。这将假定姓名或姓氏中没有空格

姓名将在
.group(1)
中,姓氏将在
.group(2)

如果您不想访问组

preg_match_all('/(?:Demandé par Dr :|(?!^)\G)\s*\K(?:\S+)/', $string)

尽管正则表达式有多种语言,但每种实现都不同。您应该指定需要它的语言。Hello Ingo for php on Linux请;)致以最诚挚的问候您应该发布您的尝试。Hello Jerry我的尝试是:(?@amorino-在添加此类详细信息时,最好编辑问题以包含新信息,而不是将其放在评论中。Hello Ingo谢谢它选择了所有句子,但我只需要选择姓名请参见此处:Regards@Jerry正确。@amorino用字符类替换
\w
你需要匹配名字(这真的取决于你)。至于只获取姓名:使用捕获的组。我只需要不带:的名称和姓氏,以及后面的空格。你认为这可能吗?@amorino你可以访问捕获的组中的名称和姓氏。@amorino如果你不想访问组,那么使用这个我想:没有组会更好,但它不起作用k here:@amorino我不确定为什么您的示例中有这么多空格…但可以使用以下内容进行调整:
preg_match_all('/(?:Demandé par Dr :|(?!^)\G)\s*\K(?:\S+)/', $string)