Regex 如何使用正则表达式从地址中提取城市。例如';休斯顿';从格式';德克萨斯州休斯敦维多利亚街113号';
如何使用正则表达式从地址中提取城市。例如,格式为“德克萨斯州休斯顿维多利亚街113号”的“休斯顿”。在本例中: 德克萨斯州休斯敦维多利亚街113号 城市是介于倒数第二个逗号(可选择后跟一个或多个空格)和最后一个逗号之间的任何东西 最后一个逗号是两个大写字母(表示州)之前的任何字符 因此: 包含一个捕获组,Regex 如何使用正则表达式从地址中提取城市。例如';休斯顿';从格式';德克萨斯州休斯敦维多利亚街113号';,regex,Regex,如何使用正则表达式从地址中提取城市。例如,格式为“德克萨斯州休斯顿维多利亚街113号”的“休斯顿”。在本例中: 德克萨斯州休斯敦维多利亚街113号 城市是介于倒数第二个逗号(可选择后跟一个或多个空格)和最后一个逗号之间的任何东西 最后一个逗号是两个大写字母(表示州)之前的任何字符 因此: 包含一个捕获组,$1将是您所在城市的名称 正则表达式的解释: +-一对任意字符数 \,-后跟逗号 \s*-后跟零表示任意数量的空格 [^\,]+-后跟任意数量的非逗号字符 \,-后跟逗号 \s*-后跟零表示
$1
将是您所在城市的名称
正则表达式的解释:
-一对任意字符数+
-后跟逗号\,
-后跟零表示任意数量的空格\s*
-后跟任意数量的非逗号字符[^\,]+
-后跟逗号\,
-后跟零表示任意数量的空格\s*
-后跟2个大写字母[A-Z]{2}
-比赛结束$
[^\,]+
的周围有括号,所以这是捕获并返回为$1
的内容,使用它可以满足您的需要:
(?<=\,\s)[a-zA-Z\s]*(?=\,\s+[A-Z]{2}$)
(?[a-zA-Z0-9\s]+,\s+([a-zA-Z\s]+),[a-zA-Z\s]+如果您处理的数据是干净的,正则表达式可以很好地工作。上面的评论应该提供一个。如果您处理的数据不干净-可能是手写文件的ocr,您可能需要查看NLP库。这是一个例子。如果您试图用简单的正则表达式处理地址,必须提及:它在城市的左边。谢谢你,@Ildar。更正。
(?<=\,\s)[a-zA-Z\s]*(?=\,\s+[A-Z]{2}$)