提取字符串中的char序列

时间:2018-06-04 21:26:47

标签: r regex

我想从这个字符串中提取非大写字母的所有文字:

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个变量将个人数据作为字符对象。任何帮助都非常感谢!

2 个答案:

答案 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"