【发布时间】:2020-10-07 03:08:08
【问题描述】:
我正在尝试使用正则表达式查找物种名称(也称为二项式名称或林奈名称),例如“智人”。规则应该是:两个单词,第一个单词以大写字母开头,第二个不;仅包含字母,但不包含数字、破折号或任何其他字符。我天真的实现是:
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>
我在这里尝试捕捉“Anadara grandis”
【问题讨论】:
-
也许
binomal <- "^[A-Z][a-z]+\\s[a-z]+$"可以吗? -
OP 不会有兴趣从更大的字符串中提取这些吗?在这种情况下,ancors 将无法正常工作。