Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中查找正则表达式调用以仅返回名字和姓氏或完整的团队名称_R_Regex - Fatal编程技术网

在R中查找正则表达式调用以仅返回名字和姓氏或完整的团队名称

在R中查找正则表达式调用以仅返回名字和姓氏或完整的团队名称,r,regex,R,Regex,我试图通过只保留名字和姓氏(或全名:前“新英格兰爱国者”)来清理专栏 下面是一组需要匹配的具有不同样式的名称。我需要一个围绕名字和姓氏或完整团队名称的捕获组: Matt Schaub QB - ATL Phillip Andersen K Cleveland Browns DEF San Francisco 49ers DEF New England Patriots DEF J.T. Barrett QB - PIT Tre McBride WR N'Keal Harry WR

我试图通过只保留名字和姓氏(或全名:前“新英格兰爱国者”)来清理专栏

下面是一组需要匹配的具有不同样式的名称。我需要一个围绕名字和姓氏或完整团队名称的捕获组:

Matt Schaub QB - ATL    
Phillip Andersen K
Cleveland Browns DEF    
San Francisco 49ers DEF
New England Patriots DEF
J.T. Barrett QB - PIT
Tre McBride WR
N'Keal Harry WR - NE
MyCole Pruitt TE - TEN
J.J. Arcega-Whiteside WR - PHI
Tre'Quan Smith WR - NO
这是我迷路前在regex引擎中所能到达的距离。我甚至不知道它有多近:

[A-Z](\\.|[a-z]+)([A-Z]|\\s)

以下是一个可能在这里起作用的解决方案:

input <- c("Matt Schaub QB - ATL", "Phillip Andersen K", "Cleveland Browns DEF",
           "San Francisco 49ers DEF", "New England Patriots DEF", "J.T. Barrett QB - PIT",
           "Tre McBride WR", "N'Keal Harry WR - NE", "MyCole Pruitt TE - TEN",
           "J.J. Arcega-Whiteside WR - PHI", "Tre'Quan Smith WR - NO")
output <- sub("\\s*\\b[A-Z]+(?: - [A-Z]+)?$", "", input)
output

 [1] "Matt Schaub"           "Phillip Andersen"      "Cleveland Browns"     
 [4] "San Francisco 49ers"   "New England Patriots"  "J.T. Barrett"         
 [7] "Tre McBride"           "N'Keal Harry"          "MyCole Pruitt"        
[10] "J.J. Arcega-Whiteside" "Tre'Quan Smith"     

input似乎您有两种不同的可能模式,我们将使用包unglue来测试它们,并使用第一种匹配的模式(使用Tim的数据)

library(脱胶)
图案[1]“Matt Schaub”“Phillip Andersen”“Cleveland Browns”
#>[4]“旧金山49人”“新英格兰爱国者”“J.T.巴雷特”
#>[7]“特雷·麦克布莱德”、“N'Keal Harry”、“迈可·普鲁伊特”
#>[10]“J.J.Arcega Whiteside”“Tre'Quan Smith”

< NelsonGon >:“旧金山49人”,“Tre McBride”<代码>子(“\s+([AZ] { 2,} ** [AZZ] $)”,'',You-Type ] < /C> >这将是如此接近!唯一的问题是团队名称。“
只保留名字和姓氏
…请显示您期望的输出。这正是团队名称让这变得棘手的原因,因为他们被认为是此df的“玩家”。查看您的输出[5]应该是“新英格兰爱国者”,而[4]应该是“旧金山49人”-有些球队的名字上有三个棋子-其他球队,如[3]克利夫兰布朗队只有两个棋子
library(unglue)
patterns <- c(
  "{team_name} {=[A-Z]+} - {=[A-Z]+}", 
  "{team_name} {=[A-Z]+}")

unglue::unglue_vec(input, patterns)
#>  [1] "Matt Schaub"           "Phillip Andersen"      "Cleveland Browns"     
#>  [4] "San Francisco 49ers"   "New England Patriots"  "J.T. Barrett"         
#>  [7] "Tre McBride"           "N'Keal Harry"          "MyCole Pruitt"        
#> [10] "J.J. Arcega-Whiteside" "Tre'Quan Smith"