You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言正则表达式提取开头大写职业字符串问题求助

R语言正则提取开头大写职业内容的解决方案

问题描述

现有如下脏数据,需要提取字符串开头的大写内容(对应人员职业):

IDStrings
A1INGÉNIEUR AGRO. (+ DEA pédologie + IAE). 27 ans whatever whatever.
A2ARCHITECTE DPLG 29 ans. 6 ans d’exp. prof, blablablabla
A3PROJETEUR-COMPOSITEUR- ARCHITECTURE 32 ans.

期望提取结果:

ID提取结果
A1INGÉNIEUR AGRO
A2ARCHITECTE DPLG
A3PROJETEUR-COMPOSITEUR- ARCHITECTURE

当前使用的代码无法适配所有情况:

data.frame %>%
  mutate(job = str_extract(string, "[[:upper:]]{2,}.+\\W"))

存在的问题:

  • A1会错误包含末尾的.,无法精准截断到AGRO
  • A3无法完整提取ARCHITECTURE,匹配逻辑不符合结构

解决方案

使用精准正则匹配开头连续的大写内容(涵盖带重音的大写字母、连字符、空格分隔的结构),直到遇到数字或小写字母为止。

正则表达式说明

^[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+(?:[- ]?[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+)*
  • ^:锁定字符串开头位置
  • [[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+:匹配至少一个大写字母(含法语带重音的大写字符)
  • (?:[- ]?[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+)*:非捕获组,匹配可选的连字符/空格后接大写字母的组合,可重复多次,确保连字符连接、空格分隔的大写词都能被完整捕获

完整代码示例

library(dplyr)
library(stringr)

# 示例数据框
df <- data.frame(ID = c("A1", "A2", "A3"),
                 Strings = c("INGÉNIEUR AGRO. (+ DEA pédologie + IAE). 27 ans whatever whatever.",
                             "ARCHITECTE DPLG 29 ans. 6 ans d’exp. prof, blablablabla",
                             "PROJETEUR-COMPOSITEUR- ARCHITECTURE 32 ans."))

# 提取职业内容
df <- df %>%
  mutate(job = str_extract(Strings, "^[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+(?:[- ]?[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]+)*"))

# 输出结果
print(df)

运行后输出结果:

ID                                                                 Strings                                  job
1 A1 INGÉNIEUR AGRO. (+ DEA pédologie + IAE). 27 ans whatever whatever.                          INGÉNIEUR AGRO
2 A2                  ARCHITECTE DPLG 29 ans. 6 ans d’exp. prof, blablablabla                          ARCHITECTE DPLG
3 A3                          PROJETEUR-COMPOSITEUR- ARCHITECTURE 32 ans. PROJETEUR-COMPOSITEUR- ARCHITECTURE

补充说明

如果后续遇到其他特殊符号的大写职业结构,可在字符组[[:upper:ÉÀÈÙÊÎÔÛÄËÏÖÜ]]中添加对应符号(如.需转义),当前正则已覆盖示例所有场景。

内容的提问来源于stack exchange,提问作者PierreGeorge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:00:58