首页 > 解决方案 > 不知道如何编写正则表达式

问题描述

我正在尝试区分团队名称。问题是两个团队都在一个列中,用破折号分隔,有些团队的名称中有破折号。格式为破折号团队名称、空格、破折号、空格、新团队名称。我想在有空格的地方分割,然后是破折号,然后是空格(“ - ”)。
例如,这里有一个问题:

"Team-A - B"

我想在一栏中阅读“A 队”,另一栏阅读“B”。

为此,我尝试过

x <- str_split(data$Team, " - ")

但这只会返回我通过它发送的相同文本。我使用了 regex101 链接:https ://regex101.com/r/PUxFir/1 ,我认为我使用正确,但显然不是。如何让 R 将破折号前后的空间识别为不同的分隔位置,而不仅仅是每个破折号?

标签: rregex

解决方案


您可以使用tidyr::separatesplit Team2 列。

tidyr::separate(df, Team, c('TeamA', 'TeamB'), sep = '\\s-\\s')

#                  TeamA                  TeamB
#1                  Bars          Torpedo Gorky
#2   Chelmet Chelyabinsk             Almetyevsk
#3  Dynamo Moscow Region              HC Rostov
#4        Gornyak Uchaly                Izhevsk
#5              HC Yugra       Nomad Nur-Sultan
#6           Krasnoyarsk        Kazzinc-Torpedo
#7               KRS ORG                  Penza
#8                Kurhan                   Perm
#9                  Orsk       Toros Neftekamsk
#10               Ryazan          Zvezda Moscow
#11               Tambov               Voronezh
#12            Tseng Tou                Beijing
#13               Tyumen              Karaganda
#14       Yermak Angarsk Metallurg Novokuznetsk
#15                 Bars          Zvezda Moscow
#16              Beijing                  Penza
#17  Chelmet Chelyabinsk       Toros Neftekamsk
#18 Dynamo Moscow Region               Voronezh
#19       Gornyak Uchaly                   Perm

推荐阅读