-1

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

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

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

另外,请问如何提取“美国”?

4

3 回答 3

0

看起来您想使用捕获组:

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

第一个捕获组将是“纽约”,第二个将是“美国”(在 Rubular 上试试)

或者你可以用逗号分隔(这可能会更简单)正如@Jerry指出的那样,假设你使用的语言/工具支持它。

于 2013-08-22T17:58:44.220 回答
0

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

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

并将捕获的组#1 用于您想要的字符串。

于 2013-08-22T18:11:15.083 回答
0

TL;博士

很大程度上取决于您的正则表达式引擎,以及您是否真的需要正则表达式或字段拆分。您可以在 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}'
于 2013-08-22T18:18:10.493 回答