我正在使用CommonMark,并且我创建了一个'@mention'解析器,它将在找到@mention时返回链接。但是,我正在调整它来链接全名而不是用户名。这是我目前有:正则表达式匹配全名和逗号或空格
$cursor->match('/^\w+,(.*)\s/');
然而,这似乎是不正确的捕捉名称和链接的其他名字的开始(见下图):
没有人有任何的想法我可以改变以匹配以逗号分隔的整个名称和/或空格?我写正则表达式很糟糕。
感谢您提前提供任何帮助!
编辑:
这里的应该配什么:
(A名称只能是2个字的最小和3个字以内)
- 鲍曼,史蒂夫
- 史蒂夫·鲍曼
- Doe,Mary Sue
- Mary苏母鹿
用逗号姓氏将只是一个单词。
什么应该不匹配:
- 史蒂夫
- 鲍曼
- 玛丽
- 李四
正则表达式必须匹配整个名称,而不是一个名称。
这是背后的match
方法CommonMark代码:
if (!preg_match($regex, $subject, $matches, PREG_OFFSET_CAPTURE)) {
return;
}
这导致到:
if (!preg_match('/^\w+,(.*)\s/', "Bauman, Steve", $matches, PREG_OFFSET_CAPTURE)) {
return;
}
什么是正则表达式的具体规则?如果你添加了一个样本输入和一组应该匹配并且不应该匹配的结果,那将会更加简单。 – degant
你可以试试一次:^ \ w + |,| \ s | \ w – Jeet
嗨@degant,对不起,我正在编辑这个问题。 –