使用正则表达式从 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.)
案例。)
我正在尝试清理一些 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.)
案例。)