0

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

Demandé par Dr :     NAME SURNAME

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

编辑:我的尝试是:(?<=Dr.:....)(.*)但这并不好,因为空间可能会改变。

编辑2:对我来说最好的方法是:(?:Demandé par Dr :|(?!^)\G)\s*\K(.*)

或更好(?:Demand. par Dr :|(?!^)\G)\s*\K(.*)地避免特殊字符问题;)

4

4 回答 4

2

这应该这样做

/Demandé par Dr :\s*(\w+)\s+(\w+)/
于 2013-09-08T19:37:57.813 回答
0

你可以使用这个正则表达式[a-zA-Z]+\s[a-zA-Z]+

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

于 2013-09-08T19:42:50.117 回答
0

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

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

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

任务完成。不需要正则表达式。

于 2013-09-08T19:43:24.950 回答
0

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

/:\s*(\S+)\s+(\S+)/

这将匹配:它之后的所有内容,忽略空格。这假定姓名或姓氏中没有空格。

正则表达式101演示

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

如果您不想访问群组...

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

正则表达式101演示

于 2013-09-08T19:46:42.943 回答