在“/”之前和之后提取字符

时间:2018-01-04 04:51:12

标签: regex stringr stringi

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

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

1 个答案:

答案 0 :(得分:1)

你的正则表达式中缺少空间。尝试:

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

请注意字符类中的空格。此外,{1,}+的长格式。

匹配将为"- SAO JOSE DOS CAMPOS / SP - CEP"。您必须在第二步中删除-,或使用零宽度后视:

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

后视是supported by gregexpr

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