提取“/”前后字符

Extract character before and after "/"

我试图提取“/”前后的字符,但没有成功。句子是:

XXXX YYY ZZZ - AV HAHEHRS, 3061 - SDDW ASDA DDSF - SAO JOSE DOS CAMPOS / SP - CEP: 00000-000

输出应该是

SAO JOSE DOS CAMPOS / SP

我正在尝试 str_extract(str, "- [a-zA-Z]{1,} / [a-zA-Z]{1,}") 但它只是让我

CAMPOS / SP

在您的正则表达式中缺少 space。尝试:

str_extract(str, "- [a-zA-Z ]+ / [a-zA-Z ]+") 

注意字符class中的space。此外,{1,}+.

的长格式

比赛将是 "- SAO JOSE DOS CAMPOS / SP - CEP"。您必须在第二步中去掉 -,或者使用零宽度后视:

str_extract(str, "(?<=- )[a-zA-Z ]+ / [a-zA-Z ]+") 

后视是supported by gregexpr


为了完整起见,您可以在没有正则表达式的情况下执行此操作:将输入拆分为 '-',找到包含 '/'、trim 的部分。这也可能比正则表达式更快。