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)