【问题标题】:catching species names (binomal names) using regex使用正则表达式捕获物种名称(二项式名称)
【发布时间】: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">&nbsp;</td>
    <td colspan="3"><div align="center"><em>Anadara grandis</em> (Broderip &amp; Sowerby, 1829)<br />
        B_ARCI_012 W. Mexico 125mm</div></td>

我在这里尝试捕捉“Anadara grandis”

【问题讨论】:

  • 也许binomal &lt;- "^[A-Z][a-z]+\\s[a-z]+$" 可以吗?
  • OP 不会有兴趣从更大的字符串中提取这些吗?在这种情况下,ancors 将无法正常工作。

标签: r regex


【解决方案1】:

试试这个正则表达式

^[A-Z][a-z]+ [a-z]+$

它匹配两个单词,第一个以大写开头,第二个没有数字,都是小写。

也试试here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 2011-05-11
  • 2019-08-09
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 2023-04-09
相关资源
最近更新 更多