首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >提取字符串中的字符序列

提取字符串中的字符序列
EN

Stack Overflow用户
提问于 2018-06-05 05:26:47
回答 2查看 80关注 0票数 1

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

代码语言:javascript
复制
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"

为了提取"Agricola,Johannes",我尝试了如下内容:

代码语言:javascript
复制
# Name
name <- sub("\\s*ALTERNATIVNAMEN\\b.*", "", a)
cat(sub("NAME", "", name))

但我不知道该怎么继续下去。我的问题是,我不知道如何使用正则表达式来表达以下内容:“匹配名称之后的所有内容,直到ALTERNATIVNAMEN”。最后,我希望有7个变量作为角色对象保存个人数据。任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-05 06:16:45

代码语言:javascript
复制
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

然后,您可以选择所需的列

票数 2
EN

Stack Overflow用户

发布于 2018-06-05 05:30:29

您可以使用strsplit,并在任意两个或两个以上大写字母的序列上拆分...

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50689015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档