我正在尝试使用正则表达式查找物种名称(也称为二项名称或林奈名称(,例如"智人"。规则应该是:两个单词,第一个单词以大写字母开头,第二个单词不以大写字母开头;仅包含字母,但不包含数字、短划线或任何其他字符。我的天真实现是:binomal <- "([A-Z]{1}[a-z]{2,}[:space:][a-z]{2,})"
它确实找到了这样的名称,但是当我不期望它们时,它也给出了积极的结果(使用 R 的grep
函数(,如以下文本行所示: 《日本、中国海、到澳大利亚》
有什么建议吗?
编辑:感谢您到目前为止的建议。我应该澄清两件事:首先,每个单词应该至少有两个字符(即"A b"不应该被捕获(。其次,我实际上正在尝试使用它在 html 文件中查找这样的二项名称。因此,不幸的是,JvdV对锚的疑虑是真实的......这是我的html文件的简短摘录:
<tr>
<td height="60"> </td>
<td colspan="3"><div align="center"><em>Anadara grandis</em> (Broderip & Sowerby, 1829)<br />
B_ARCI_012 W. Mexico 125mm</div></td>
在这里,我试图抓住"阿纳达拉格兰迪斯">
试试这个正则表达式
^[A-Z][a-z]+ [a-z]+$
它匹配两个单词,第一个单词开头大写,第二个没有数字,都是小写的。
也试试这里