用逗号分隔的地址的正则表达式代码

时间:2013-08-22 17:55:34

标签: regex

如何仅使用正则表达式代码提取第三个逗号之前的状态文本?

  

54 West 21st Street Suite 603, New York, 纽约United States, 10010

我已经成功地提取了我想要的其余部分,但这个是一个问题。

另外,我怎样才能提取“美国”?

3 个答案:

答案 0 :(得分:0)

看起来你想要使用捕获组:

.*,.*,(.*),(.*),.*

第一个捕获组将是“纽约”,第二个捕获组将是“美国”(Rubular的try it)。

或者您可以使用逗号(可能更简单)分割为@Jerry points out,假设您使用的语言/工具支持。

答案 1 :(得分:0)

您可以使用此正则表达式:

(?:[^,]*,){2}([^,]*)

并使用捕获的组#1获取所需的字符串。

答案 2 :(得分:0)

TL; DR

很大程度上取决于您的正则表达式引擎,以及您是否真的需要正则表达式或字段拆分。您可以在Ruby和Awk(以及其他)中进行字段拆分,但sed和grep只能执行正则表达式。请参阅下面的一些示例,以帮助您入门。

红宝石

str = '54 West 21st Street Suite 603, New York,New York,United States, 10010'
str.match /(?:.*?,){2}([^,]+)/
$1
#=> "New York"

GNU sed

$ echo '54 West 21st Street Suite 603, New York,New York,United States, 10010' |
    sed -rn 's/([^,]+,){2}([^,]+).*/\2/p'

GNU awk

$ echo '54 West 21st Street Suite 603, New York,New York,United States, 10010' |
    awk -F, '{print $3}'