用于提取城市名称的正则表达式 (.NET)
Regex to extract city names (.NET)
正在寻找从地址中提取城市名称的表达式。尝试在 WebHarvy 中使用此表达式,它使用 .NET 风格的正则表达式
示例地址
1234 Savoy Dr Ste 123
New Houston, TX 77036-3320
或
1234 Savoy Dr Ste 510
Texas, TX 77036-3320
所以城市名称可以是一个或两个单词。
我正在尝试的表达式是
(\w|\w\s\w)+(?=,\s\w{2})
当我在 RegexStorm 上尝试这个时,它似乎工作正常,但是当我在 WebHarvy 中使用它时,它只捕获城市名称 New Houston 中的 'n' 和 'n' 来自奥斯汀
我哪里错了?
在 WebHarvey 中,如果正则表达式包含捕获组,则返回其内容。因此,您不需要向前看。
另一点是您需要匹配 1 个或多个字符,可选地后跟一大块空格,然后是 1 个或多个字符。您的正则表达式包含一个重复的捕获组,其内容在每次迭代时都被重写,并且在找到匹配项后,第 1 组仅包含 n
:
使用
(\w+(?:[^\S\r\n]+\w+)?),\s\w{2})
[^\S\r\n]+
部分匹配除 CR 和 LF 之外的任何空格。您可以使用 [\p{Zs}\t]+
来匹配任何 1+ 水平 空格。
正在寻找从地址中提取城市名称的表达式。尝试在 WebHarvy 中使用此表达式,它使用 .NET 风格的正则表达式
示例地址
1234 Savoy Dr Ste 123
New Houston, TX 77036-3320
或
1234 Savoy Dr Ste 510
Texas, TX 77036-3320
所以城市名称可以是一个或两个单词。
我正在尝试的表达式是
(\w|\w\s\w)+(?=,\s\w{2})
当我在 RegexStorm 上尝试这个时,它似乎工作正常,但是当我在 WebHarvy 中使用它时,它只捕获城市名称 New Houston 中的 'n' 和 'n' 来自奥斯汀
我哪里错了?
在 WebHarvey 中,如果正则表达式包含捕获组,则返回其内容。因此,您不需要向前看。
另一点是您需要匹配 1 个或多个字符,可选地后跟一大块空格,然后是 1 个或多个字符。您的正则表达式包含一个重复的捕获组,其内容在每次迭代时都被重写,并且在找到匹配项后,第 1 组仅包含 n
:
使用
(\w+(?:[^\S\r\n]+\w+)?),\s\w{2})
[^\S\r\n]+
部分匹配除 CR 和 LF 之外的任何空格。您可以使用 [\p{Zs}\t]+
来匹配任何 1+ 水平 空格。