有没有一种方法可以使用正则表达式将地址字符串分成 3 个单独的字符串
Is there a method for dividing an Address string into 3 separate strings using regex
我目前正在做一个项目,该项目要求我将地址分为街道号码、街道名称,如果有套房,则分为套房名称。
例如:1360 白橡树 RD STE F -----> 1360 |白橡树路 | STE F
我目前正在使用 google sheet 并使用 =regexextract() 功能,该功能使用 Regex 将字符串解析到不同的列中。这就是我目前划分数字和街道的方式(假设完整地址在 B 列中。
=ArrayFormula(REGEXEXTRACT(B1:B,"[0-9]*")) ---->gets the number EX:(1360)
=ArrayFormula(REGEXEXTRACT(B1:B," [a-zA-Z0-9 ]+")) ---->gets the street address including the suite number with a white space at the begining EX:( WHITE OAK RD STE F)
我正在努力解决的问题是如何从第二个公式中删除白色 space 并防止它获取套件文本(始终以 STE 开头)。最后,获取套件文本和编号的公式是什么。
谢谢,我很感激你能提供的任何帮助!
对于 Google 个工作表,您可以使用以下 3 个公式:
=REGEXEXTRACT(B1,"^[0-9]*")
=REGEXREPLACE(B1,"^[0-9\s]*|\s*STE.*$", "")
=REGEXEXTRACT(B1,"STE.*$")
我会使用 lookbehinds,但它们并没有在所有浏览器中得到普遍支持(目前)。
我不是 Google 表格专家,所以我选择删除 ArrayFormula
并将 B1:B
替换为 B1
,因为它们看起来多余。
MonkeyZeus 提供的公式完美运行,没有任何问题。
如果您的结果在相邻的列中,您可以在每一行上使用一个公式,例如
=SPLIT(REGEXREPLACE(B1,"([0-9]+) (.+) (STE.*)","♣︎♣︎"),"♣︎")
或者甚至使用数组公式来获取整个列的结果
=ArrayFormula(IFERROR(SPLIT(REGEXREPLACE(B1:B,"([0-9]+) (.+) (STE.*)","♣︎♣︎"),"♣︎")))
公式的作用
- 使用括号
()
我们将文本分为 3 组 </code>、<code>
、</code></li>
<li><code>♣︎♣︎
添加字符 ♣︎
(可以是任何不干扰公式的字符)我们为 SPLIT
函数准备文本
- 我们将现在形成的文本分成组,到找到
♣︎
的相邻列
Arrayformula
将以上所有内容应用于列 B
中的每一行,而 IFERROR
确保我们不会出现任何错误(例如发现空单元格时)。
使用的函数:
我目前正在做一个项目,该项目要求我将地址分为街道号码、街道名称,如果有套房,则分为套房名称。 例如:1360 白橡树 RD STE F -----> 1360 |白橡树路 | STE F
我目前正在使用 google sheet 并使用 =regexextract() 功能,该功能使用 Regex 将字符串解析到不同的列中。这就是我目前划分数字和街道的方式(假设完整地址在 B 列中。
=ArrayFormula(REGEXEXTRACT(B1:B,"[0-9]*")) ---->gets the number EX:(1360)
=ArrayFormula(REGEXEXTRACT(B1:B," [a-zA-Z0-9 ]+")) ---->gets the street address including the suite number with a white space at the begining EX:( WHITE OAK RD STE F)
我正在努力解决的问题是如何从第二个公式中删除白色 space 并防止它获取套件文本(始终以 STE 开头)。最后,获取套件文本和编号的公式是什么。
谢谢,我很感激你能提供的任何帮助!
对于 Google 个工作表,您可以使用以下 3 个公式:
=REGEXEXTRACT(B1,"^[0-9]*")
=REGEXREPLACE(B1,"^[0-9\s]*|\s*STE.*$", "")
=REGEXEXTRACT(B1,"STE.*$")
我会使用 lookbehinds,但它们并没有在所有浏览器中得到普遍支持(目前)。
我不是 Google 表格专家,所以我选择删除 ArrayFormula
并将 B1:B
替换为 B1
,因为它们看起来多余。
MonkeyZeus 提供的公式完美运行,没有任何问题。
如果您的结果在相邻的列中,您可以在每一行上使用一个公式,例如
=SPLIT(REGEXREPLACE(B1,"([0-9]+) (.+) (STE.*)","♣︎♣︎"),"♣︎")
或者甚至使用数组公式来获取整个列的结果
=ArrayFormula(IFERROR(SPLIT(REGEXREPLACE(B1:B,"([0-9]+) (.+) (STE.*)","♣︎♣︎"),"♣︎")))
公式的作用
- 使用括号
()
我们将文本分为 3 组</code>、<code>
、</code></li> <li><code>♣︎♣︎
添加字符♣︎
(可以是任何不干扰公式的字符)我们为SPLIT
函数准备文本 - 我们将现在形成的文本分成组,到找到
♣︎
的相邻列 Arrayformula
将以上所有内容应用于列B
中的每一行,而IFERROR
确保我们不会出现任何错误(例如发现空单元格时)。
使用的函数: