我想从这个字符串中提取非大写字母的所有文字:
a <- "NAME
Agricola, Johannes
ALTERNATIVNAMEN
Schneider, Johann; Schnitter, Johannes; Eisleben, Johannes; Agricola Eisleben, Johannes; Bauer, Hans
KURZBESCHREIBUNG
deutscher Reformator
GEBURTSDATUM
20. April 1494
GEBURTSORT
Eisleben
STERBEDATUM
22. September 1566
STERBEORT
Berlin"
为了提取&#34; Agricola,Johannes&#34;,我尝试了类似的事情:
# Name
name <- sub("\\s*ALTERNATIVNAMEN\\b.*", "", a)
cat(sub("NAME", "", name))
但我不知道如何继续。我的问题是我无法使用正则表达式来表达以下内容:&#34;在NAME之后匹配所有内容直到ALTERNATIVNAMEN&#34;。最后,我希望有7个变量将个人数据作为字符对象。任何帮助都非常感谢!
答案 0 :(得分:2)
read.table(text=gsub("([[:upper:]])\\n","\\1:",a),sep=":")
V1 V2
1 NAME Agricola, Johannes
2 ALTERNATIVNAMEN Schneider, Johann; Schnitter, Johannes; Eisleben, Johannes; Agricola Eisleben, Johannes; Bauer, Hans
3 KURZBESCHREIBUNG deutscher Reformator
4 GEBURTSDATUM 20. April 1494
5 GEBURTSORT Eisleben
6 STERBEDATUM 22. September 1566
7 STERBEORT Berlin
然后,您可以选择所需的列
答案 1 :(得分:0)
您可以使用strsplit
并按两个或多个大写字母的任意顺序进行拆分......
strsplit(a,"[A-Z]{2,}")
[[1]]
[1] ""
[2] "\nAgricola, Johannes\n"
[3] "\nSchneider, Johann; Schnitter, Johannes; Eisleben, Johannes; Agricola Eisleben, Johannes; Bauer, Hans\n"
[4] "\ndeutscher Reformator\n"
[5] "\n20. April 1494\n"
[6] "\nEisleben\n"
[7] "\n22. September 1566\n"
[8] "\nBerlin"