提取“/”前后字符
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 的部分。这也可能比正则表达式更快。
我试图提取“/”前后的字符,但没有成功。句子是:
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 的部分。这也可能比正则表达式更快。