如何提取“By”后面的单词来提取作者姓名

亨利·邱

我正在尝试从文章中提取可能的作者姓名。我的工作假设作者姓名在署名中

"By FirstName LastName"

或者

"By FirstName MiddleName LastName"

名字、中间名和姓氏都以大写字母开头。

如何使用正则表达式提取“By”之后的所有 2-3 个单词字符串,这些字符串也满足上述条件?

例如,如果文章有文字

"By Barack Obama on January 20th 2017. By January 2017, we all know Obama will no longer be the president"

它会提取

"Barack Obama"

"January"

作为可能的作者姓名,然后我将确定哪个是正确的。

目前我的正则表达式是:

/By ([A-Z][\w-]*(\s+[A-Z][\w-]*)+)/

但是,当我在字符串上使用它时

"By Alex Jackson Olerud"

它似乎同时返回

"Alex Jackson Olerud"

" Olerud"

我使用 Ruby 作为我的首选语言,但任何与语言无关的解决方案都足够了。

埃纳马格努斯

这是我的建议:

str = "By Barack Obama on January 20th 2017. By January 2017, we all know Obama will no longer be the president. 
By A. B. Cecil"

def find_authors(str)
    str.scan(/
    (?<name> # a named capture group for one of the names
            \p{Lu} # starts with an upper case letter, unicode so will work also for e.g. Åsa
            (?: \. | \p{Ll}+) # followed by a period or some lower case letters
    ){0} # zero matches, this is just a subroutine to be used again

    (?<=[Bb]y\s) # lookbehind to make sure the author is after a by or By
    (?<wholename> # capture group to extract the whole name
        \g<name> (\s \g<name>){1,2} # a name should have a least two components
    )/x).map(&:last) # remove the match by the <name> group from the result
end

def find_authors_oneline(str)
    str.scan(/(?<name>\p{Lu}(?:\.|\p{Ll}+)){0}(?<=[Bb]y\s)(?<wholename>\g<name>(\s\g<name>){1,2})/).map(&:last)
end

p find_authors str
>> ["Barack Obama", "A. B. Cecil"]
p find_authors_oneline str
>> ["Barack Obama", "A. B. Cecil"]

您可以阅读有关正则表达式子例程正则表达式 /x 修饰符的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用 XPath 表达式提取作者姓名

来自分类Dev

如何在此处将作者姓名分组?

来自分类Dev

Wordpress在摘录的开头添加作者姓名

来自分类Dev

如何从前面的标签中提取单词或句子?

来自分类Dev

给定SHA1,如何在git中获取(仅)作者姓名或电子邮件?

来自分类Dev

如何对多个元素使用相同的ID?-ArcText Wordpress作者姓名JS

来自分类Dev

如何在作者姓名的基础上显示VSTO Word加载项?

来自分类Dev

如何使用VBA在Word中的注释中设置作者姓名?

来自分类Dev

如何访问作者姓名和其他docx元数据

来自分类Dev

如何在LaTex书目中自动在特定作者姓名下划线

来自分类Dev

如何从该数据库中获得标题最短的书的作者姓名?

来自分类Dev

Word 2010如何创建宏以在页脚中自动插入作者姓名?

来自分类Dev

如何更改或设置我在Microsoft Word 2016上的评论的特定作者姓名

来自分类Dev

如何访问作者姓名和其他docx元数据

来自分类Dev

如何使用VBA在Word中的注释中设置作者姓名?

来自分类Dev

如何在我的网站帖子页面上显示作者姓名?

来自分类Dev

如何在我的 PGM 中加载图像和作者姓名?

来自分类Dev

如何在推荐滑块中将滑块点转换为作者姓名?

来自分类Dev

获取当前作者档案的作者姓名

来自分类Dev

在WordPress中的作者存档页面上获取作者姓名

来自分类Dev

在Prestashop 1.7中显示作者类别中的作者姓名

来自分类Dev

获取当前作者档案的作者姓名

来自分类Dev

乳胶:在引用两个具有相同姓名作者的相同位置的引用时,如何避免省略作者姓名

来自分类Dev

git在提交范围,脚本中编辑作者姓名

来自分类Dev

在woocomerce产品单页中添加作者姓名的钩子

来自分类Dev

仅获得Windows版本SVN的作者姓名

来自分类Dev

Android Studio git签入作者姓名

来自分类Dev

Bitbucket需要更改最后的提交作者姓名

来自分类Dev

存储具有作者姓名的数据-laravel 5.2

Related 相关文章

  1. 1

    如何使用 XPath 表达式提取作者姓名

  2. 2

    如何在此处将作者姓名分组?

  3. 3

    Wordpress在摘录的开头添加作者姓名

  4. 4

    如何从前面的标签中提取单词或句子?

  5. 5

    给定SHA1,如何在git中获取(仅)作者姓名或电子邮件?

  6. 6

    如何对多个元素使用相同的ID?-ArcText Wordpress作者姓名JS

  7. 7

    如何在作者姓名的基础上显示VSTO Word加载项?

  8. 8

    如何使用VBA在Word中的注释中设置作者姓名?

  9. 9

    如何访问作者姓名和其他docx元数据

  10. 10

    如何在LaTex书目中自动在特定作者姓名下划线

  11. 11

    如何从该数据库中获得标题最短的书的作者姓名?

  12. 12

    Word 2010如何创建宏以在页脚中自动插入作者姓名?

  13. 13

    如何更改或设置我在Microsoft Word 2016上的评论的特定作者姓名

  14. 14

    如何访问作者姓名和其他docx元数据

  15. 15

    如何使用VBA在Word中的注释中设置作者姓名?

  16. 16

    如何在我的网站帖子页面上显示作者姓名?

  17. 17

    如何在我的 PGM 中加载图像和作者姓名?

  18. 18

    如何在推荐滑块中将滑块点转换为作者姓名?

  19. 19

    获取当前作者档案的作者姓名

  20. 20

    在WordPress中的作者存档页面上获取作者姓名

  21. 21

    在Prestashop 1.7中显示作者类别中的作者姓名

  22. 22

    获取当前作者档案的作者姓名

  23. 23

    乳胶:在引用两个具有相同姓名作者的相同位置的引用时,如何避免省略作者姓名

  24. 24

    git在提交范围,脚本中编辑作者姓名

  25. 25

    在woocomerce产品单页中添加作者姓名的钩子

  26. 26

    仅获得Windows版本SVN的作者姓名

  27. 27

    Android Studio git签入作者姓名

  28. 28

    Bitbucket需要更改最后的提交作者姓名

  29. 29

    存储具有作者姓名的数据-laravel 5.2

热门标签

归档