使用正则表达式从 R 中的 pdf 文档中提取所有不同的参考选项(多个 options/capture 组?)

Extracting all different options of references from pdf document in R with regex (multiple options/capture groups?)

我正在尝试清理一些 pdf 文档以进行文本分析。我正在尝试获取文本中的所有引用并将其删除。我的问题是,有太多的选择可以引用…… 我的文件被分成单行。 我有一个工作的正则表达式,它只捕获标准格式

a) 作者(年份),某事。 "Author, firstname, someone, else (1996), something: Analysis, Paris.\r"

我要选项a,

b) 作者(年(字)), 东西.

  "Author, firstname, someone, else (1996a), something: Analysis, Paris.\r"

c) 作者(即将出版),某事。

  "Author, firstname, someone, else (forthcoming), something: Analysis, Paris.\r"

d) Author/s(编辑)(年),....

  "Author, firstname, someone, else (eds.) (1996), something: Analysis, Paris.\r"

e) 作者 (n.d.), ....

  "Author, firstname, someone, else (n.d.), something: Analysis, Paris.\r"

我已经在我的文档中找到了所有这些...可能还有一些我还没有找到的选项,所以如果您有示例或类似的东西,我将非常感谢您提供的所有帮助。

工作代码如下:

   [ ]*[A-Z].*\([0-9]{4}\),[[:space:]][“A-Z]

我最近的尝试是这样的:

   [ ]*[A-Z].*(\([a-z]{3,4}\.?\))?(\([0-9]{4}[a-z]?\))?(\(forthcoming\))?,[[:space:]][“A-Z]

我试着让尽可能多的部分成为可选的,但现在它抓住了太多。

我希望得到正则表达式找到的所有引用的列表,如果可能的话,包含所有选项。目前它抓取的不够(第一种情况)或太多(第二种情况)。

My latest try is this:

   [ ]*[A-Z].*(\([a-z]{3,4}\.?\))?(\([0-9]{4}[a-z]?\))?(\(forthcoming\))?,[[:space:]][“A-Z]

I tried to make as many pieces optional as I could, but now it grabs too much.

您几乎完美地组成了 pieces 三个选项,但由于您将它们全部设为 optional,即使 none 存在。最好使用 alternation 运算符 |,它需要一个子表达式来匹配,i。 e.而不是 X?Y?Z?(X|Y|Z);这使得:

  [ ]*[A-Z].*(\([.a-z]{3,4}\.?\)|\([0-9]{4}[a-z]?\)|\(forthcoming\)),[[:space:]][“A-Z]

(请注意,我将第一个 [a-z] 更改为 [.a-z] 以便也涵盖 (n.d.) 案例。)