如何仅使用正则表达式代码提取第三个逗号之前的状态文本?
54 West 21st Street Suite 603, New York,
纽约,United States, 10010
我已经成功地提取了我想要的其余部分,但这个是一个问题。
另外,我怎样才能提取“美国”?
答案 0 :(得分:0)
看起来你想要使用捕获组:
.*,.*,(.*),(.*),.*
第一个捕获组将是“纽约”,第二个捕获组将是“美国”(Rubular的try it)。
或者您可以使用逗号(可能更简单)分割为@Jerry points out,假设您使用的语言/工具支持。
答案 1 :(得分:0)
您可以使用此正则表达式:
(?:[^,]*,){2}([^,]*)
并使用捕获的组#1获取所需的字符串。
答案 2 :(得分:0)
很大程度上取决于您的正则表达式引擎,以及您是否真的需要正则表达式或字段拆分。您可以在Ruby和Awk(以及其他)中进行字段拆分,但sed和grep只能执行正则表达式。请参阅下面的一些示例,以帮助您入门。
str = '54 West 21st Street Suite 603, New York,New York,United States, 10010'
str.match /(?:.*?,){2}([^,]+)/
$1
#=> "New York"
$ echo '54 West 21st Street Suite 603, New York,New York,United States, 10010' |
sed -rn 's/([^,]+,){2}([^,]+).*/\2/p'
$ echo '54 West 21st Street Suite 603, New York,New York,United States, 10010' |
awk -F, '{print $3}'