两个特定模式之间的正则表达式,包括换行符
Regex between two specific patterns including newline
我有一个具有以下模式的文本文件:
Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
A, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel
Vel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque
Enim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur
tincidunt. sem. vitae,
montes, tellus. amet, venenatis natoque enim. fringilla
quis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,
nisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel
Aenean ultricies nec, eu laoreet.
Dr. Enim. vitae, feugiat in, Aenean
Abstract title: Massa. sociis dis dapibus dolor semper ipsum
jalor
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
ligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies
imperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,
Phasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,
vulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,
consequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,
nascetur
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
Dr. Justo. nisi elementum ante, Donec Aenean Nulla
Abstract title:
Aenean consectetuer leo penatibus eget imperdiet nisi. consequat
lorem pretium mus.
Prof. Dr. Aliquam metus semper
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum
eleifend
More information will be available soon.
我想提取这些部分:
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
Abstract title: Massa. sociis dis dapibus dolor semper ipsum
jalor
Abstract title:
和
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum
eleifend
More information will be available soon.
现在,我发现这些很有用:
- Regular Expression to find a string included between two characters while EXCLUDING the delimiters
但 (?<=(Abstract title:))(.*)(?=\n{2})
returns 只有
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
和
Abstract title:
试试这个正则表达式,
Abstract title:(?:.|\r?\n\w)*
它捕获所有内容,例如:
摘要标题:Lorem ipsum dolor sit amet, consectetuer adipiscing
摘要标题:弥撒。我总是很嫉妒我的朋友
摘要标题:
摘要标题:宣传车。这是很多,因为它是公平的,而不是,对于 eleifend lorem。除了ipsum eleifend 更多信息将很快提供。
(正如你在问题中提到的)
告诉我是否适合你...
在 R 中,您可以使用
提取匹配项并将匹配项中的所有白色space“规范化”为常规单个space
x <- "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.\nAbstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing\n\nA, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel\n\nVel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque\nEnim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur\ntincidunt. sem. vitae,\nmontes, tellus. amet, venenatis natoque enim. fringilla\nquis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,\nnisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel\nAenean ultricies nec, eu laoreet.\n\nDr. Enim. vitae, feugiat in, Aenean\nAbstract title: Massa. sociis dis dapibus dolor semper ipsum\njalor\n\nSemper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet\neleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla\nligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies\nimperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,\nPhasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,\nvulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,\nconsequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,\nnascetur\nSemper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet\neleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla\n\n\nDr. Justo. nisi elementum ante, Donec Aenean Nulla\nAbstract title:\n\nAenean consectetuer leo penatibus eget imperdiet nisi. consequat\nlorem pretium mus. \n\nProf. Dr. Aliquam metus semper\nAbstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum\neleifend\nMore information will be available soon.\n"
library(stringr)
pattern <- "(?<=Abstract title:).*(?:\n(?!\n).*)*"
results <- lapply(str_extract_all(x, pattern), function(z) trimws(gsub("\s+", " ", z)))
results
看起来像
[[1]]
[1] "Lorem ipsum dolor sit amet, consectetuer adipiscing"
[2] "Massa. sociis dis dapibus dolor semper ipsum jalor"
[3] ""
[4] "Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum eleifend More information will be available soon."
参见R demo online and the regex demo。
正则表达式详细信息:
(?<=Abstract title:)
- 正后视匹配紧跟在 Abstract title:
之前的位置
.*
- 除换行字符外的任何零个或多个字符尽可能多
(?:\n(?!\n).*)*
- 零个或多个序列
\n(?!\n)
- 一个换行符没有紧跟另一个换行符
.*
- 除换行字符外的任何零个或多个字符尽可能多
lapply(..., function(z) trimws(gsub("\s+", " ", z)))
“缩小”结果列表中的白色space。
将文本文件解析为两列
您可以使用
library(readr)
library(stringr)
file <- read_lines(path)
file_string <- paste(file, collapse="\n")
pattern <- "(?m)^(.+)\n(Abstract title:.*(?:\n(?!\n).*)*)"
res <- str_match_all(file_string, pattern)
res <- lapply(res, function(z) trimws(gsub("\s+", " ", z[,-1])))
输出为
[[1]]
[,1] [,2]
[1,] "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue." "Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing"
[2,] "Dr. Enim. vitae, feugiat in, Aenean" "Abstract title: Massa. sociis dis dapibus dolor semper ipsum jalor"
[3,] "Dr. Justo. nisi elementum ante, Donec Aenean Nulla" "Abstract title:"
[4,] "Prof. Dr. Aliquam metus semper" "Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum eleifend More information will be available soon."
首先,很抱歉回复晚了,因为我没有你们大多数人那么快 XD。
从讨论中可以看出
,
我实际上只发布了问题的一部分,否则它会太
复杂的国际海事组织。所以,在这里我把各个部分放在一起。谁评论或
回答了,很有帮助。我接受他的回答,因为他花了很多时间并引导我走向正确的方向。
目标
请看一下问题中的MWO,以供参考。我需要提取
来自文本文件的三个单独的列,使用 pdftotext
提取
在带有文本和图像的 pdf
上。最终结果应该是一个包含三列的数据框。这三列将是,例如
第 1 列。
Dr. Enim. vitae, feugiat in, Aenean
第 2 列。
Abstract title: Massa. sociis dis dapibus dolor semper ipsum jalor
第 3 列。
Semper tincidunt. ullamcorper ... viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
所以,换行符需要保持完整,Wiktor Stribiżew 我意识到了这一点。
所以,grep, sed and awk很难做到。我从
.
阅读问题中提供的模式
读取模式&删除回车符return \f
或U+000C
wholeFileAsString <- read_file(file="pattern.txt")
wholeFileAsString <- wholeFileAsString %>% str_remove("\f");
testString <- "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
A, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel
Vel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque
Enim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur
tincidunt. sem. vitae,
montes, tellus. amet, venenatis natoque enim. fringilla
quis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,
nisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel
Aenean ultricies nec, eu laoreet.
Dr. Enim. vitae, feugiat in, Aenean
Abstract title: Massa. sociis dis dapibus dolor semper ipsum
jalor
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
ligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies
imperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,
Phasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,
vulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,
consequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,
nascetur
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
Dr. Justo. nisi elementum ante, Donec Aenean Nulla
Abstract title:
Aenean consectetuer leo penatibus eget imperdiet nisi. consequat
lorem pretium mus.
Prof. Dr. Aliquam metus semper
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum
eleifend
More information will be available soon."
分别提取 AbstractTitle
和 Name
列。
pattern_AbstractTitle <- "(?m)(^Abstract.*\n){1}(.*\n)";
pattern_AbstractTitle <- "(?m)(^Abstract.*\n){1}^((?!More).)*";
AbstractTitle <- str_extract_all(wholeFileAsString, pattern_AbstractTitle) %>%
unlist() %>% as.vector();
pattern_Name <- "(?m)(?<=\n\n)\f?(?:^.*\n)(.*\n)?(?=^Ab(s?)tract.*)";
Name <- wholeFileAsString %>% str_extract_all(pattern_Name) %>% unlist() %>%
as.vector() %>% c("Prof. Mauro Alini, AO Research Institute", .);
AbstractTitle <- append(AbstractTitle,
"Abstract title: more information will follow soon\n", after=
length(AbstractTitle));
提取其余部分(仅不含 AbstractTitle
和 Name
行)。
pattern_NameAbstractTitle <-
"(?m)(?<=\n\n)\f?(?:^.*\n)(.*\n)?(?=^Ab(s?)tract.*)(^Abstract.*\n){1}^((?!More).)*"
wholeFileAsString_wo_NameAbstractTitle <- wholeFileAsString %>%
str_remove_all(pattern_NameAbstractTitle) %>% as.vector();
将整个字符串写入 .txt
# write.table(wholeFileAsString_wo_NameAbstractTitle, file = "outfile.txt")
writeLines(wholeFileAsString_wo_NameAbstractTitle,
"wholeFileAsString_wo_NameAbstractTitle.txt")
正在准备带有简短传记的专栏
# read_file(file = "wholeFileAsString_wo_NameAbstractTitle.txt")
wholeFileAsString_wo_NameAbstractTitle %>% str()
shortBio <- wholeFileAsString_wo_NameAbstractTitle %>% str_remove_all("\f") %>%
str_replace_all("(?m)\n(?!\n)","")
shortBio2 <- shortBio %>% str_replace_all("(?m)\n+","\n") %>%
str_extract_all(".*\n") %>% unlist(); str(shortBio); shortBio2;
shortBio3 <- shortBio2 %>% as.vector(); shortBio3 <-
shortBio3[2:length(shortBio3)];
shortBio4 <- shortBio3[-1]
正在将字符串写入 .txt
个文件。
shortBio4 %>% writeLines("shortBio4.txt");
加入三列数据框
dfNameAbstractTitle <- data.frame(Name, AbstractTitle);
dfNameAbstractTitle <- dfNameAbstractTitle %>% rbind(c(NA, NA));
dfNameAbstractTitleShortBio <- dfNameAbstractTitle %>% data.frame(shortBio4)
我有一个具有以下模式的文本文件:
Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
A, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel
Vel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque
Enim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur
tincidunt. sem. vitae,
montes, tellus. amet, venenatis natoque enim. fringilla
quis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,
nisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel
Aenean ultricies nec, eu laoreet.
Dr. Enim. vitae, feugiat in, Aenean
Abstract title: Massa. sociis dis dapibus dolor semper ipsum
jalor
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
ligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies
imperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,
Phasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,
vulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,
consequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,
nascetur
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
Dr. Justo. nisi elementum ante, Donec Aenean Nulla
Abstract title:
Aenean consectetuer leo penatibus eget imperdiet nisi. consequat
lorem pretium mus.
Prof. Dr. Aliquam metus semper
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum
eleifend
More information will be available soon.
我想提取这些部分:
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
Abstract title: Massa. sociis dis dapibus dolor semper ipsum jalor
Abstract title:
和
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum eleifend More information will be available soon.
现在,我发现这些很有用:
- Regular Expression to find a string included between two characters while EXCLUDING the delimiters
但 (?<=(Abstract title:))(.*)(?=\n{2})
returns 只有
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
和
Abstract title:
试试这个正则表达式,
Abstract title:(?:.|\r?\n\w)*
它捕获所有内容,例如:
摘要标题:Lorem ipsum dolor sit amet, consectetuer adipiscing
摘要标题:弥撒。我总是很嫉妒我的朋友
摘要标题:
摘要标题:宣传车。这是很多,因为它是公平的,而不是,对于 eleifend lorem。除了ipsum eleifend 更多信息将很快提供。
(正如你在问题中提到的)
告诉我是否适合你...
在 R 中,您可以使用
提取匹配项并将匹配项中的所有白色space“规范化”为常规单个spacex <- "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.\nAbstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing\n\nA, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel\n\nVel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque\nEnim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur\ntincidunt. sem. vitae,\nmontes, tellus. amet, venenatis natoque enim. fringilla\nquis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,\nnisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel\nAenean ultricies nec, eu laoreet.\n\nDr. Enim. vitae, feugiat in, Aenean\nAbstract title: Massa. sociis dis dapibus dolor semper ipsum\njalor\n\nSemper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet\neleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla\nligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies\nimperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,\nPhasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,\nvulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,\nconsequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,\nnascetur\nSemper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet\neleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla\n\n\nDr. Justo. nisi elementum ante, Donec Aenean Nulla\nAbstract title:\n\nAenean consectetuer leo penatibus eget imperdiet nisi. consequat\nlorem pretium mus. \n\nProf. Dr. Aliquam metus semper\nAbstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum\neleifend\nMore information will be available soon.\n"
library(stringr)
pattern <- "(?<=Abstract title:).*(?:\n(?!\n).*)*"
results <- lapply(str_extract_all(x, pattern), function(z) trimws(gsub("\s+", " ", z)))
results
看起来像
[[1]]
[1] "Lorem ipsum dolor sit amet, consectetuer adipiscing"
[2] "Massa. sociis dis dapibus dolor semper ipsum jalor"
[3] ""
[4] "Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum eleifend More information will be available soon."
参见R demo online and the regex demo。
正则表达式详细信息:
(?<=Abstract title:)
- 正后视匹配紧跟在Abstract title:
之前的位置
.*
- 除换行字符外的任何零个或多个字符尽可能多(?:\n(?!\n).*)*
- 零个或多个序列\n(?!\n)
- 一个换行符没有紧跟另一个换行符.*
- 除换行字符外的任何零个或多个字符尽可能多
lapply(..., function(z) trimws(gsub("\s+", " ", z)))
“缩小”结果列表中的白色space。
将文本文件解析为两列
您可以使用
library(readr)
library(stringr)
file <- read_lines(path)
file_string <- paste(file, collapse="\n")
pattern <- "(?m)^(.+)\n(Abstract title:.*(?:\n(?!\n).*)*)"
res <- str_match_all(file_string, pattern)
res <- lapply(res, function(z) trimws(gsub("\s+", " ", z[,-1])))
输出为
[[1]]
[,1] [,2]
[1,] "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue." "Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing"
[2,] "Dr. Enim. vitae, feugiat in, Aenean" "Abstract title: Massa. sociis dis dapibus dolor semper ipsum jalor"
[3,] "Dr. Justo. nisi elementum ante, Donec Aenean Nulla" "Abstract title:"
[4,] "Prof. Dr. Aliquam metus semper" "Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum eleifend More information will be available soon."
首先,很抱歉回复晚了,因为我没有你们大多数人那么快 XD。
从讨论中可以看出
目标
请看一下问题中的MWO,以供参考。我需要提取
来自文本文件的三个单独的列,使用 pdftotext
提取
在带有文本和图像的 pdf
上。最终结果应该是一个包含三列的数据框。这三列将是,例如
第 1 列。
Dr. Enim. vitae, feugiat in, Aenean
第 2 列。
Abstract title: Massa. sociis dis dapibus dolor semper ipsum jalor
第 3 列。
Semper tincidunt. ullamcorper ... viverra pede elit. eget aliquet eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
所以,换行符需要保持完整,Wiktor Stribiżew 我意识到了这一点。
所以,grep, sed and awk很难做到。我从
阅读问题中提供的模式
读取模式&删除回车符return \f
或U+000C
wholeFileAsString <- read_file(file="pattern.txt")
wholeFileAsString <- wholeFileAsString %>% str_remove("\f");
testString <- "Prof. Imperdiet montes, metus elementum eleifend eget eget adipiscing augue.
Abstract title: Lorem ipsum dolor sit amet, consectetuer adipiscing
A, nec, quam eleifend quis, magnis sit pretium. leo augue. amet, elit. vel
Vel, dis eget nascetur justo. imperdiet consequat et sit Nam Aenean a, Quisque
Enim. a, dui. Aenean lorem Phasellus commodo quis, pretium ultricies nascetur
tincidunt. sem. vitae,
montes, tellus. amet, venenatis natoque enim. fringilla
quis, vitae, Aenean Etiam viverra ipsum dapibus ut elementum Aenean Lorem eget,
nisi mollis Curabitur Quisque Aenean rhoncus sociis justo, sem. justo, vel
Aenean ultricies nec, eu laoreet.
Dr. Enim. vitae, feugiat in, Aenean
Abstract title: Massa. sociis dis dapibus dolor semper ipsum
jalor
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
ligula vulputate ac, nisi. enim dapibus. Donec metus In sit dolor Nam ultricies
imperdiet. pellentesque Cras eu, massa quis porttitor parturient varius ut,
Phasellus arcu. pretium. quam augue. eu, adipiscing felis, enim. ante,
vulputate Integer dui. ultricies a, dictum rutrum. Nullam nec, quis,
consequat Cum tellus. dis felis dolor. nulla Aliquam Donec massa. justo. in,
nascetur
Semper tincidunt. ullamcorper commodo magnis viverra pede elit. eget aliquet
eleifend vel, eleifend feugiat pede Vivamus ridiculus vitae, a, ligula, et Nulla
Dr. Justo. nisi elementum ante, Donec Aenean Nulla
Abstract title:
Aenean consectetuer leo penatibus eget imperdiet nisi. consequat
lorem pretium mus.
Prof. Dr. Aliquam metus semper
Abstract title: Aliquet augue. amet, enim ut justo, nec, eleifend lorem enim. nisi. ipsum
eleifend
More information will be available soon."
分别提取 AbstractTitle
和 Name
列。
pattern_AbstractTitle <- "(?m)(^Abstract.*\n){1}(.*\n)";
pattern_AbstractTitle <- "(?m)(^Abstract.*\n){1}^((?!More).)*";
AbstractTitle <- str_extract_all(wholeFileAsString, pattern_AbstractTitle) %>%
unlist() %>% as.vector();
pattern_Name <- "(?m)(?<=\n\n)\f?(?:^.*\n)(.*\n)?(?=^Ab(s?)tract.*)";
Name <- wholeFileAsString %>% str_extract_all(pattern_Name) %>% unlist() %>%
as.vector() %>% c("Prof. Mauro Alini, AO Research Institute", .);
AbstractTitle <- append(AbstractTitle,
"Abstract title: more information will follow soon\n", after=
length(AbstractTitle));
提取其余部分(仅不含 AbstractTitle
和 Name
行)。
pattern_NameAbstractTitle <-
"(?m)(?<=\n\n)\f?(?:^.*\n)(.*\n)?(?=^Ab(s?)tract.*)(^Abstract.*\n){1}^((?!More).)*"
wholeFileAsString_wo_NameAbstractTitle <- wholeFileAsString %>%
str_remove_all(pattern_NameAbstractTitle) %>% as.vector();
将整个字符串写入 .txt
# write.table(wholeFileAsString_wo_NameAbstractTitle, file = "outfile.txt")
writeLines(wholeFileAsString_wo_NameAbstractTitle,
"wholeFileAsString_wo_NameAbstractTitle.txt")
正在准备带有简短传记的专栏
# read_file(file = "wholeFileAsString_wo_NameAbstractTitle.txt")
wholeFileAsString_wo_NameAbstractTitle %>% str()
shortBio <- wholeFileAsString_wo_NameAbstractTitle %>% str_remove_all("\f") %>%
str_replace_all("(?m)\n(?!\n)","")
shortBio2 <- shortBio %>% str_replace_all("(?m)\n+","\n") %>%
str_extract_all(".*\n") %>% unlist(); str(shortBio); shortBio2;
shortBio3 <- shortBio2 %>% as.vector(); shortBio3 <-
shortBio3[2:length(shortBio3)];
shortBio4 <- shortBio3[-1]
正在将字符串写入 .txt
个文件。
shortBio4 %>% writeLines("shortBio4.txt");
加入三列数据框
dfNameAbstractTitle <- data.frame(Name, AbstractTitle);
dfNameAbstractTitle <- dfNameAbstractTitle %>% rbind(c(NA, NA));
dfNameAbstractTitleShortBio <- dfNameAbstractTitle %>% data.frame(shortBio4)