提取R?

提取R?,r,regex,R,Regex,假设我有一个像 Group Score Duck QuackDUC 0.343 Ten TopTEN 0.198 ** -Men MaleMEN 0.350 y -Rural AreaRU 0.888 Maple TreeMAP 0.468 Man NavyMN 0.150 我想提取每个组中的单词,它是在空格“”之后的字符串,在所有大写字母中的2-3字符字符串之前。也就是说,我希望结果是 Group Score Quack 0.34

假设我有一个像

Group            Score
Duck QuackDUC    0.343
Ten TopTEN       0.198
** -Men MaleMEN  0.350
y -Rural AreaRU  0.888
Maple TreeMAP    0.468
Man NavyMN       0.150
我想提取每个
中的单词,它是在空格“”之后的字符串,在所有大写字母中的2-3字符字符串之前。也就是说,我希望结果是

Group Score
Quack 0.343
Top   0.198
Male  0.350
Area  0.888
Tree  0.468
Navy  0.150

如何提取这些单词?

我们可以使用
sub
。我们匹配零个或多个字符,后跟一个或多个字母,后跟一个或多个空格(
\\s+
),将大写字母和后面的字母保留在捕获组中(即括号内
(…)
),并将其替换为对捕获组的反向引用(
\\1


df1$Group我们可以使用
sub
。我们匹配零个或多个字符,后跟一个或多个字母,后跟一个或多个空格(
\\s+
),将大写字母和后面的字母保留在捕获组中(即括号内
(…)
),并将其替换为对捕获组的反向引用(
\\1


df1$Group对于所提供的数据,
sub(.*([A-Z][A-Z]+)*,“\\1”,df1$Group)
似乎也起作用,尽管您的答案比所提供的数据更完整,
sub(.*([A-Z][A-Z]+)*,“\\1”,df1$Group)
似乎也起作用,尽管您的答案更完整
df1$Group <- sub(".*[A-Za-z]+\\s+([A-Z][a-z]+).*", "\\1", df1$Group)
df1$Group
#[1] "Quack" "Top"   "Male"  "Area"  "Tree"  "Navy"