正则表达式以逗号分隔值获取第n个值

时间:2016-02-22 06:38:00

标签: java regex

此查询

/(?:[^\,]*\,){10}([^,]*)/

返回所有值,直到第10个值,但我正在寻找一个只给出第10个值的查询。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

虽然您可以使用正则表达式解析CSV,或使用String#split解析,但为什么要重新发明轮子?你可以使用很好的CSV libraries,他们会为你处理很多特殊情况。例如,您的解决方案不会使用逗号处理带引号的字符串。也许你还不需要它,但是你可能还要防范将来需要它。以下是您的表现方式:

QTranslator

答案 1 :(得分:1)

public String get10thElement(String input) {
    // String input = "\"20266547:20000256\",\"-\",\"20000256\",\"20266547\",\"-\",9349,\"-\",\"-\",\"2016-01-23\",\"04:‌​41:39\",\"GET /dojo/1.10.4-std/dojo/fx.js HTTP/1.1\",200,\"3433\",\"SCRUB_1_URL\"";
    String[] elements = input.split(",");
    return elements[9];
}

您已将此标记为Java。使用拆分方法。

答案 2 :(得分:0)

来自Logentries.com documentation,我认为您需要这些内容:

where(/(?:[^\,]*\,){10}(?P<tenthItem>([^,]*))/)

这会将第十个匹配项指向名为tenthItem的变量。请仔细注意这里使用的语法:

(?P<tenthItem>([^,]*))

这表示您希望匹配([^,]*)的任何内容进入名为tenthItem的变量。